イントロスペクション
日本語(yǔ) 內省
英語(yǔ) introspection
ふりがな いんとろすぺくしょん
フリガナ イントロスペクション
説明
JavaBeansの
プロパティを取得すること、もしくは取得できること。
JavaBeansは、使用する側が
動(dòng)的に「どのような
プロパティを持っているのか」を取得し、得られた情報を元に
プロパティの
getter/setterを使用してアクセスする必要がある。
この「
プロパティの情報を取得できる」ことを「イントロスペクション」と呼ぶ。もしくは「
プロパティの情報を取得する」ことを「イントロスペクションする」と言う。
特定の
Java Beanクラスをイントロスペクションする場(chǎng)合、Introspector
クラスを使用する。
Introspector
クラスのgetBeanInfo
()staticメソッドを使用することで、
プロパティについての情報を持つBeanInfo
インターフェイスを取得し、そこから
getter/setterメソッドを取得することができる。
通常、Introspector
クラスは
リフレクションを用いて
プロパティの情報を取得し、BeanInfo
インターフェイスの
実裝クラスに持たせる。
つまり、「イントロスペクション」を実現する手段のひとつが「
リフレクション」ということになる。
一応、ある
クラスが
Java Beanであるためには「イントロスペクションが
行える」必要がある。
ただし、通常は
リフレクションが代わりにイントロスペクション用の情報を提供してくれるため、意識して
実裝する必要はないだろう。
使用例
// src/bean/SampleBean.javapackage bean;// Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。// ここではbeanパッケージに入れます。// 一応、Java Beanは直列化可能にする必要があります。// 実際には必要ない場(chǎng)合も多いですが。import java.io.Serializable;/*** Sampleクラスで使用するJava Beanクラスです。*/public class SampleBean implements Serializable{/*** プロパティ。*/private int data;/*** コンストラクタ。*/public SampleBean(){data = 0;}/*** プロパティのgetter。*/public int getData(){return data;}/*** プロパティのsetter。*/public void setData( int value ){this.data = value;}}// Sample.javaimport java.beans.Introspector;import java.beans.BeanInfo;import java.beans.PropertyDescriptor;import java.beans.IntrospectionException;import bean.SampleBean;public class Sample{public static void main( String[] args ){try{// SampleBeanクラスの情報を取得します。BeanInfo beanInfo = Introspector.getBeanInfo( SampleBean.class );// SampleBeanクラスのプロパティ全てを取得します。PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();// プロパティそれぞれの、getter/setterを出力します。for( int iF1 = 0; iF1 < propertyDescriptors.length; ++iF1 ){System.out.println( propertyDescriptors[iF1].getReadMethod() );System.out.println( propertyDescriptors[iF1].getWriteMethod() );}// public final native java.lang.Class java.lang.Object.getClass()// null// public int bean.SampleBean.getData()// public void bean.SampleBean.setData(int)}catch( IntrospectionException e ){// IntrospectorクラスのgetBeanInfo()メソッドで例外が発生した場(chǎng)合// (JavaBeansじゃない場(chǎng)合とか)にはIntrospectionException例外が// 投げられます。e.printStackTrace();}}}
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。