モジュール java.desktop
パッケージ java.beans

クラスIntrospector


  • public class Introspector
    extends Object
    Introspectorクラスは、ツールに対して、ターゲットJava Beanがサポートするプロパティ、イベント、メソッドを調べる標準的な手法を提供します。

    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™の仕様を参照してください。

    導入されたバージョン:
    1.1
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      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, int flags)
      いくつかの制御フラグに従って、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 String[] getBeanInfoSearchPath()
      BeanInfoクラスの検索に使用するパッケージ名のリストを取得します。
      static void setBeanInfoSearchPath​(String[] path)
      BeanInfoクラスの検索に使用されるパッケージ名のリストを変更します。
    • フィールドの詳細

      • USE_ALL_BEANINFO

        public static final int USE_ALL_BEANINFO
        すべてのbeaninfoを使用することを示すフラグ。
        導入されたバージョン:
        1.2
        関連項目:
        定数フィールド値
      • IGNORE_IMMEDIATE_BEANINFO

        public static final int IGNORE_IMMEDIATE_BEANINFO
        直接のBeaninfoを無視することを示すフラグ。
        導入されたバージョン:
        1.2
        関連項目:
        定数フィールド値
      • IGNORE_ALL_BEANINFO

        public static final int IGNORE_ALL_BEANINFO
        すべてのBeaninfoを無視することを示すフラグ。
        導入されたバージョン:
        1.2
        関連項目:
        定数フィールド値
    • メソッドの詳細

      • 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 - イントロスペクション中に例外が発生した場合。
        導入されたバージョン:
        1.2
      • getBeanInfo

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

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

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

        public static BeanInfo getBeanInfo​(Class<?> beanClass,
                                           Class<?> stopClass,
                                           int flags)
                                    throws IntrospectionException
        いくつかの制御flagsに従って、Java Beanのイントロスペクションを行い、指定されたstopClassポイントに達するまで、そのすべてのプロパティ、公開されたメソッド、イベントについて調べます。
        USE_ALL_BEANINFO
        検出できるすべてのBeanInfoが使用されます。
        IGNORE_IMMEDIATE_BEANINFO
        指定されたbeanClassに関連付けられているBeanInfoが無視されます。
        IGNORE_ALL_BEANINFO
        指定されたbeanClassまたはそのすべての親クラスに関連付けられているBeanInfoをすべて無視します。
        stopClassまたはその親クラスに含まれるメソッド、プロパティ、イベントは、分析処理ではすべて無視されます。

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

        パラメータ:
        beanClass - 分析されるBeanクラス
        stopClass - 分析を停止する親クラス
        flags - イントロスペクションを制御するためのフラグ
        戻り値:
        ターゲットBeanを記述するBeanInfoオブジェクト
        例外:
        IntrospectionException - イントロスペクション中に例外が発生した場合。
        導入されたバージョン:
        1.7
      • decapitalize

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

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

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

        public static String[] getBeanInfoSearchPath()
        BeanInfoクラスの検索に使用するパッケージ名のリストを取得します。
        戻り値:
        BeanInfoクラスの検索に使用されるパッケージ名の配列。 この配列のデフォルト値は実装に依存する。たとえばSunの実装での初期設定は{"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オブジェクトを再分析させる必要が生じた場合だけです。
        導入されたバージョン:
        1.2
      • flushFromCaches

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