|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.beans.Introspector
Introspector クラスは、ターゲットの Java Bean がサポートするプロパティ、イベント、およびメソッドについてツールが調べるための、標準的な方法を提供します。
上記の 3 種類の情報について、Introspector は 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 |
フィールドの詳細 |
public static final int USE_ALL_BEANINFO
public static final int IGNORE_IMMEDIATE_BEANINFO
public static final int IGNORE_ALL_BEANINFO
メソッドの詳細 |
public static BeanInfo getBeanInfo(Class beanClass) throws IntrospectionException
beanClass
- 分析される bean クラスIntrospectionException
- イントロスペクション中に例外が発生した場合public static BeanInfo getBeanInfo(Class beanClass, int flags) throws IntrospectionException
beanClass
- 分析される bean クラスflags
- イントロスペクションを制御するためのフラグ。flags == USE_ALL_BEANINFO の場合、見つかったすべての BeanInfo クラスを使用する。flags == IGNORE_IMMEDIATE_BEANINFO の場合、指定された beanClass に関連した BeanInfo をすべて無視する。flags == IGNORE_ALL_BEANINFO の場合、指定された beanClass またはそのすべての親クラスに関連したすべての BeanInfo を無視するIntrospectionException
- イントロスペクション中に例外が発生した場合public static BeanInfo getBeanInfo(Class beanClass, Class stopClass) throws IntrospectionException
bean
- 分析される bean クラスstopClass
- 分析を停止する基底クラス。stopClass やその基底クラス内のメソッド/プロパティ/イベントはすべて、分析処理では無視されるIntrospectionException
- イントロスペクション中に例外が発生した場合public static String decapitalize(String name)
つまり、「FooBah」は「fooBah」、「X」は「x」になりますが、「URL」は変りません。
name
- 小文字に変換される文字列public static String[] getBeanInfoSearchPath()
最初は {"sun.beans.infos"} に設定されている
public static void setBeanInfoSearchPath(String[] path)
セキュリティマネージャが存在する場合、最初に、セキュリティマネージャの checkPropertiesAccess
メソッドが呼び出されます。これによって、SecurityException がスローされる場合があります。
path
- パッケージ名の配列SecurityException
- セキュリティマネージャが存在し、セキュリティマネージャの checkPropertiesAccess
メソッドがシステムプロパティの設定を許可しない場合SecurityManager.checkPropertiesAccess()
public static void flushCaches()
public static void flushFromCaches(Class clz)
clz
- フラッシュされるクラスオブジェクト
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.