JavaTM 2
Platform
Std. Ed. v1.4.0

java.beans
クラス Introspector

java.lang.Object
  |
  +--java.beans.Introspector

public class Introspector
extends Object

Introspector クラスは、ツールを使って、ターゲット JavaBean がサポートするプロパティ、イベント、メソッドを調べる標準的な手法を提供します。

Introspector は、上記の 3 種類の情報について、bean のクラスとスーパークラスを別々に分析し、明示的あるいは暗示的な情報を見つけ出し、その情報を使ってターゲットの bean を包括的に記述する BeanInfo オブジェクトを構築します。

Foo クラスについては、情報の問い合わせ時に null 以外の値を提供する FooBeanInfo クラスがあれば、明示的な情報を取得できます。まず、ターゲットの bean クラスの完全指定のパッケージ名に「BeanInfo」を付加して新規のクラス名とし、BeanInfo クラスを検索します。これに失敗した場合は、この完全指定のパッケージ名の最後のクラス名にあたる部分を使って、BeanInfo パッケージ検索パスに指定されたパッケージごとに該当クラスを検索します。

このように、たとえば sun.xyz.OurButton というクラスの場合、まず sun.xyz.OurButtonBeanInfo という BeanInfo クラスを検索し、見つからない場合は BeanInfo 検索パス内のパッケージごとに OurButtonBeanInfo クラスを検索します。

クラスが明示的な BeanInfo を提供する場合は、これを分析クラスおよび派生クラスから取得した BeanInfo 情報に追加します。明示的な情報は、現在のクラスとその基底クラスに関する信頼できる情報と見なせるので、スーパークラスの連鎖の検索は行いません。

クラスの明示的な BeanInfo が見つからない場合は、低レベルのリフレクションを使ってクラスのメソッドを調べ、標準設計パターンを適用して、プロパティのアクセス用メソッド、イベントソースメソッド、public メソッドを識別します。次に、クラスのスーパークラスを分析し、この情報を追加します。このとき、スーパークラスの連鎖をさかのぼる可能性もあります。

イントロスペクションおよび設計パターンの詳細については、「JavaBeans specification」を参照してください。


フィールドの概要
static int IGNORE_ALL_BEANINFO
           
static int IGNORE_IMMEDIATE_BEANINFO
           
static int USE_ALL_BEANINFO
           
 
メソッドの概要
static String decapitalize(String name)
          文字列を引数に取り、通常の Java 変数名の大文字使用法に従って変換するユーティリティメソッドです。
static void flushCaches()
          Introspector の内部キャッシュをすべてフラッシュします。
static void flushFromCaches(Class clz)
          指定のクラスに関する Introspector の内部キャッシュ情報をフラッシュします。
static BeanInfo getBeanInfo(Class beanClass)
          Java bean のイントロスペクションを行い、すべてのプロパティ、公開メソッド、イベントについて調べます。
static BeanInfo getBeanInfo(Class beanClass, Class stopClass)
          Java bean のイントロスペクションを行い、指定の「停止」ポイントに達するまで、プロパティ、公開されたメソッドを調べます。
static BeanInfo getBeanInfo(Class beanClass, int flags)
          いくつかの制御フラグに従って、Java bean のイントロスペクションを行い、すべてのプロパティ、公開されたメソッド、イベントについて調べます。
static String[] getBeanInfoSearchPath()
          BeanInfo クラスの検索に使用するパッケージ名のリストを取得します。
static void setBeanInfoSearchPath(String[] path)
          BeanInfo クラスの検索に使用するパッケージ名のリストを変更します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

USE_ALL_BEANINFO

public static final int USE_ALL_BEANINFO
関連項目:
定数フィールド値

IGNORE_IMMEDIATE_BEANINFO

public static final int IGNORE_IMMEDIATE_BEANINFO
関連項目:
定数フィールド値

IGNORE_ALL_BEANINFO

public static final int IGNORE_ALL_BEANINFO
関連項目:
定数フィールド値
メソッドの詳細

getBeanInfo

public static BeanInfo getBeanInfo(Class beanClass)
                            throws IntrospectionException
Java bean のイントロスペクションを行い、すべてのプロパティ、公開メソッド、イベントについて調べます。

この Java Bean の BeanInfo クラスに対してイントロスペクションを実行したことがある場合、BeanInfo キャッシュから BeanInfo クラスを取得できます。

パラメータ:
beanClass - 分析される bean クラス
戻り値:
ターゲット bean を記述する BeanInfo オブジェクト
例外:
IntrospectionException - イントロスペクション中に例外が発生した場合
関連項目:
flushCaches(), flushFromCaches(java.lang.Class)

getBeanInfo

public static BeanInfo getBeanInfo(Class beanClass,
                                   int flags)
                            throws IntrospectionException
いくつかの制御フラグに従って、Java bean のイントロスペクションを行い、すべてのプロパティ、公開されたメソッド、イベントについて調べます。

この Java Bean の BeanInfo クラスに対して、同じ引数を使ってイントロスペクションを実行したことがある場合、BeanInfo キャッシュから BeanInfo クラスを取得できます。

パラメータ:
beanClass - 分析される bean クラス
flags - イントロスペクションを制御するためのフラグ。flags == USE_ALL_BEANINFO の場合、見つかったすべての BeanInfo クラスを使用する。flags == IGNORE_IMMEDIATE_BEANINFO の場合、指定された beanClass の BeanInfo をすべて無視する。flags == IGNORE_ALL_BEANINFO の場合、指定された beanClass またはそのすべての親クラスの BeanInfo をすべて無視する
戻り値:
ターゲット bean を記述する BeanInfo オブジェクト
例外:
IntrospectionException - イントロスペクション中に例外が発生した場合

getBeanInfo

public static BeanInfo getBeanInfo(Class beanClass,
                                   Class stopClass)
                            throws IntrospectionException
Java bean のイントロスペクションを行い、指定の「停止」ポイントに達するまで、プロパティ、公開されたメソッドを調べます。

この Java Bean の BeanInfo クラスに対して、同じ引数を使ってイントロスペクションを実行したことがある場合、BeanInfo キャッシュから BeanInfo クラスを取得できます。

パラメータ:
stopClass - 分析を停止する基底クラス。stopClass やその基底クラスに含まれるメソッド、プロパティ、イベントは、分析処理ではすべて無視される
例外:
IntrospectionException - イントロスペクション中に例外が発生した場合

decapitalize

public static String decapitalize(String name)
文字列を引数に取り、通常の Java 変数名の大文字使用法に従って変換するユーティリティメソッドです。通常は最初の文字を大文字から小文字に変換しますが、この変換を行わない特殊なケースもあります (複数の文字が存在し、先頭の文字と 2 番目の文字がどちらも大文字である場合など)。

たとえば、「FooBah」は「fooBah」、「X」は「x」に変換されますが、「URL」は変換されません。

パラメータ:
name - 小文字に変換される文字列
戻り値:
小文字に変換された文字列

getBeanInfoSearchPath

public static String[] getBeanInfoSearchPath()
BeanInfo クラスの検索に使用するパッケージ名のリストを取得します。

戻り値:
BeanInfo クラスの検索に使用されるパッケージ名の配列

初期設定は {"sun.beans.infos"}


setBeanInfoSearchPath

public static void setBeanInfoSearchPath(String[] path)
BeanInfo クラスの検索に使用するパッケージ名のリストを変更します。パラメータパスが null の場合、このメソッドの動作は不確定です。

セキュリティマネージャが存在する場合、最初に、セキュリティマネージャの checkPropertiesAccess メソッドが呼び出されます。これによって、SecurityException がスローされる場合があります。

パラメータ:
path - パッケージ名の配列
例外:
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkPropertiesAccess メソッドがシステムプロパティの設定を許可しない場合
関連項目:
SecurityManager.checkPropertiesAccess()

flushCaches

public static void flushCaches()
Introspector の内部キャッシュをすべてフラッシュします。通常、このメソッドは不要です。このメソッドが必要とされるのは、拡張ツールが既存の配置済み Class オブジェクトを更新し、Introspector に既存の Class オブジェクトを再分析させる必要が生じた場合だけです。


flushFromCaches

public static void flushFromCaches(Class clz)
指定のクラスに関する Introspector の内部キャッシュ情報をフラッシュします。通常、このメソッドは不要です。このメソッドが必要とされるのは、拡張ツールが既存の配置済み Class オブジェクトを更新し、Introspector に既存の Class オブジェクトを再分析させる必要が生じた場合だけです。なお、このメソッドによってフラッシュされるのは、ターゲットの Class オブジェクトの直接的な状態だけです。同じ名前を持つ別の Class オブジェクトの状態や、サブクラスなどの関連 Class オブジェクトの状態は、ターゲット Class オブジェクトから間接的に取得した情報を持っていたとしても、フラッシュされません。

パラメータ:
clz - フラッシュされる Class オブジェクト
例外:
NullPointerException - Class オブジェクトが null の場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.