JavaBeanと対応する内省API
JavaBeanは少し仕様のあるjavaクラスです.
正規性:クラスのアクセス権限publicの場合、パラメトリックコンストラクタの有無、属性アクセス権限がprivateの場合、アクセス属性はset、getメソッド、およびいくつかの名前付き仕様などを使用します.
利益性:javabeanはプログラムの中で便利に再利用され、開発効率を高めることができます.他のクラスは、これらのJavaBeanプロパティを独自のメカニズムで発見し、操作します.
------------------------------------------------------------------------------------------------------------------------------------
JDKにはJavaBeanを操作するAPIがいくつか用意されており、このAPIは内省と呼ばれています.次に例を示します.
JavaBeanクラス(ReflectPoint):
これはテストクラス(IntroSpectorTest)で、このクラスでは内省APIが使用されます.
もちろん,開発ではBeanUtilパッケージを用いて属性の取得や設定を容易にすることが多い.(commons-beanutils.jarとcommons-logging-1.1.1.jarの2つのパッケージをインポートするには)
パッケージをインポートするとJavaBeanの操作が簡単になることがわかります.
正規性:クラスのアクセス権限publicの場合、パラメトリックコンストラクタの有無、属性アクセス権限がprivateの場合、アクセス属性はset、getメソッド、およびいくつかの名前付き仕様などを使用します.
利益性:javabeanはプログラムの中で便利に再利用され、開発効率を高めることができます.他のクラスは、これらのJavaBeanプロパティを独自のメカニズムで発見し、操作します.
------------------------------------------------------------------------------------------------------------------------------------
JDKにはJavaBeanを操作するAPIがいくつか用意されており、このAPIは内省と呼ばれています.次に例を示します.
JavaBeanクラス(ReflectPoint):
package com.www.Reflect;
public class ReflectPoint {
private int x;
private int y;
public ReflectPoint(int x,int y){ // !
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
これはテストクラス(IntroSpectorTest)で、このクラスでは内省APIが使用されます.
package com.www.Reflect;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
/*
* JavaBean
*/
public class IntroSpectorTest {
public static void main(String[] args) throws Exception {
ReflectPoint pt1 = new ReflectPoint(4, 6);
String propertyName = "x";
// PropertyDescriptor JavaBean set、get
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
// PropertyDescriptor ,
// get() x
Method methodGetX = pd.getReadMethod();//
Object retVal = methodGetX.invoke(pt1);//
System.out.println(retVal);
// Set() x
Method methodSetX = pd.getWriteMethod();//
methodSetX.invoke(pt1,8);//
System.out.println(pt1.getX());
}
}
もちろん,開発ではBeanUtilパッケージを用いて属性の取得や設定を容易にすることが多い.(commons-beanutils.jarとcommons-logging-1.1.1.jarの2つのパッケージをインポートするには)
BeanUtils.setProperty(pt1, propertyName, "9"); //pt1 JavaBean ,propertyName
System.out.println(BeanUtils.getProperty(pt1,propertyName));
パッケージをインポートするとJavaBeanの操作が簡単になることがわかります.