先のリストは、IntrospectorのgetBeanInfoメソッドと、GenericBeanInfoクラスの コンストラクタの主要部分です。このリストを見ていると、Beanについての情報の 集まりであるBeanInfoが、いくつかのDescriptorの集まりであることが 分かります。そのフィールドを調べてみれば、BeanInfoが、次のような情報を抱えて いることが分かります。
BeanDescriptor BeanクラスとそのCustomizer EventSetDescriptor[] リスナーの型とメソッド、add/removeListener Method 等 PropertyDescriptor[] プロパティの型、read/write メソッド、プロパティEditor MethodDescriptor[] Methodとその引数の型
Beansを特徴づける Property / Event / Methodに対応して、Java Beansには、PropertyDescriptor / EventSetDescriptor / MethodDescriptor という Descriptorがありますが、これらはいずれも、FeatureDescriptor を拡大したものです。 BeanDescriptor以外のDescriptorは、いずれも配列です。たとえば、あるBeanに属する プロパティが10個あったとすれば、それぞれのプロパティに対応した、10個の Descriptorからなる配列が作られるということです。EventSet, Methodについても、 同様に、配列が形成されます。BeanInfoには、これらのDescriptorの他に、EventSetと Propertyについては、それぞれのデフォールト時の値が、情報として含まれています。 あと一つ、BeanInfoの中に、BeanInfo自体が一つ、入れ子で含まれていることにも注意 して下さい。
このようになかなか複雑な構造をしているのですが、基本的には、BeanInfoは、 Beanの イベント、プロパティ、メソッドの三者についての情報を、それぞれの Descriptorで格納したものと考えることができます。