|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.beans.Introspector
public class Introspector
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 メソッドを識別します。次に、クラスのスーパークラスを分析し、この情報を追加します。このとき、スーパークラスの連鎖をさかのぼる可能性もあります。
Introspector は、パフォーマンスの向上の目的で BeanInfo クラスをキャッシュするため、複数のクラスローダーを使用するアプリケーションで Introspector を使用する場合は注意してください。一般に、クラスのイントロスペクションを実行するために使用した ClassLoader
を破棄するときは、
または Introspector.flushCaches
メソッドを使用して、イントロスペクションされたすべてのクラスをキャッシュからフラッシュするようにしてください。
Introspector.flushFromCaches
イントロスペクションおよび設計パターンの詳細については、「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
この 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 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 の場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。