public class Introspector extends Object
Introspectorは、上記の3種類の情報について、Beanのクラスとスーパー・クラスを別々に分析し、明示的あるいは暗示的な情報を見つけ出し、その情報を使ってターゲットのBeanを包括的に記述するBeanInfoオブジェクトを構築します。
Fooクラスについては、情報の問い合わせ時にnull以外の値を提供するFooBeanInfoクラスがあれば、明示的な情報を取得できます。まず、ターゲットのBeanクラスの完全指定されたパッケージ名に「BeanInfo」を付加して新規のクラス名とし、BeanInfoクラスを検索します。これに失敗した場合は、この完全指定されたパッケージ名の最後のクラス名にあたる部分を使って、BeanInfoパッケージ検索パスに指定されたパッケージごとに該当クラスを検索します。
このように、たとえばsun.xyz.OurButtonというクラスの場合、まずsun.xyz.OurButtonBeanInfoというBeanInfoクラスを検索し、見つからない場合はBeanInfo検索パス内のパッケージごとにOurButtonBeanInfoクラスを検索します。デフォルトの検索パスの場合はsun.beans.infos.OurButtonBeanInfoになります。
クラスが明示的なBeanInfoを提供する場合は、これを分析クラスおよび派生クラスから取得したBeanInfo情報に追加します。明示的な情報は、現在のクラスとその基底クラスに関する信頼できる情報と見なせるので、スーパー・クラスの連鎖の検索は行いません。
クラスの明示的なBeanInfoが見つからない場合は、低レベルのリフレクションを使ってクラスのメソッドを調べ、標準設計パターンを適用して、プロパティのアクセス用メソッド、イベント・ソース・メソッド、publicメソッドを識別します。次に、クラスのスーパー・クラスを分析し、この情報を追加します。このとき、スーパー・クラスの連鎖をさかのぼる可能性もあります。
イントロスペクションおよび設計パターンの詳細については、JavaBeans(tm)の仕様を参照してください。
修飾子と型 | フィールドと説明 |
---|---|
static int |
IGNORE_ALL_BEANINFO
すべてのBeaninfoを無視することを示すフラグ。
|
static int |
IGNORE_IMMEDIATE_BEANINFO
直接のBeaninfoを無視することを示すフラグ。
|
static int |
USE_ALL_BEANINFO
すべての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, Class<?> stopClass, int flags)
いくつかの制御
flags に従って、Java Beanのイントロスペクションを行い、指定されたstopClass ポイントに達するまで、そのすべてのプロパティ、公開されたメソッド、イベントについて調べます。 |
static BeanInfo |
getBeanInfo(Class<?> beanClass, int flags)
いくつかの制御フラグに従って、Java Beanのイントロスペクションを行い、すべてのプロパティ、公開されたメソッド、イベントについて調べます。
|
static String[] |
getBeanInfoSearchPath()
BeanInfoクラスの検索に使用するパッケージ名のリストを取得します。
|
static void |
setBeanInfoSearchPath(String[] path)
BeanInfoクラスの検索に使用されるパッケージ名のリストを変更します。
|
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
このJava BeanのBeanInfoクラスに対してイントロスペクションを実行したことがある場合、BeanInfoキャッシュからBeanInfoクラスを取得できます。
beanClass
- 分析されるBeanクラス。IntrospectionException
- イントロスペクション中に例外が発生した場合。flushCaches()
, flushFromCaches(java.lang.Class<?>)
public static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
この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をすべて無視する。IntrospectionException
- イントロスペクション中に例外が発生した場合。public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass) throws IntrospectionException
このJava BeanのBeanInfoクラスに対して、同じ引数を使ってイントロスペクションを実行したことがある場合、BeanInfoキャッシュからBeanInfoクラスを取得できます。
beanClass
- 分析されるBeanクラス。stopClass
- 分析を停止する基底クラス。stopClassまたはその基底クラスに含まれるメソッド、プロパティ、イベントは、分析処理ではすべて無視される。IntrospectionException
- イントロスペクション中に例外が発生した場合。public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
flags
に従って、Java Beanのイントロスペクションを行い、指定されたstopClass
ポイントに達するまで、そのすべてのプロパティ、公開されたメソッド、イベントについて調べます。
beanClass
に関連付けられているBeanInfoが無視されます。beanClass
またはそのすべての親クラスに関連付けられているBeanInfoをすべて無視します。stopClass
またはその親クラスに含まれるメソッド、プロパティ、イベントは、分析処理ではすべて無視されます。
このJava BeanのBeanInfoクラスに対して、同じ引数を使ってイントロスペクションを実行したことがある場合、BeanInfoキャッシュからBeanInfoクラスを取得できます。
beanClass
- 分析されるBeanクラスstopClass
- 分析を停止する親クラスflags
- イントロスペクションを制御するためのフラグIntrospectionException
- イントロスペクション中に例外が発生した場合。public static String decapitalize(String name)
たとえば、「FooBah」は「fooBah」、「X」は「x」に変換されますが、「URL」は変換されません。
name
- 小文字に変換される文字列。public static String[] getBeanInfoSearchPath()
public static void setBeanInfoSearchPath(String[] path)
最初に、セキュリティ・マネージャがある場合はそのcheckPropertiesAccess
メソッドが呼び出されます。この結果、SecurityExceptionがスローされることがあります。
path
- パッケージ名の配列。SecurityException
- セキュリティ・マネージャが存在し、そのcheckPropertiesAccess
メソッドがシステム・プロパティの設定を許可しない場合。SecurityManager.checkPropertiesAccess()
public static void flushCaches()
public static void flushFromCaches(Class<?> clz)
clz
- フラッシュされるClassオブジェクト。NullPointerException
- Classオブジェクトがnullの場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.