Java_反射_内省JavaBean



1.JavaBeanの概要
内省(IntroSpector)はJava言語のBeanクラス属性、イベントに対するデフォルトの処理方法である.
public class Person
{
	private String name;
	public String getName() 
	{
		return name;
	}
	public void setName(String name) 
	{
		this.name = name;
	}
}

たとえば、前のPersonクラスには、getメソッドとsetメソッドが存在するプライベートメンバーnameがあり、nameを取得および設定し、対応するフィールドの読み取りおよび書き込み方法を反射することでより簡単に取得できます.
2.JavaBean内部実装プロセスJavaには、ある属性にアクセスするためのgetter/setterメソッドが提供されている.これらのAPIにより、パッケージjavaに格納されているこのルールを理解する必要がない.beans中!メカニズム解析:どのようなプロパティ操作(name)に対して、それぞれ対応(getNameとsetName)を必要とし、反射によって方法を見つけ、普通の反射でも完成します!すなわち、name->Name->getName()->setName()-->反射メカニズムによるMethod(getTime->time、getUDP->UDP(2番目のアルファベットが大文字のため、最初のアルファベットはそのまま)を返します.
3.JavaBeanが使用する2つの方法
/* */
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);// BeanInfo
PropertyDescriptor[] pros = beanInfo.getPropertyDescriptors();// 
for(PropertyDescriptor pro: pros)
{
	if(pro.getName().equals("name"))// ;
	{
		Method m = pro.getReadMethod();// name get , getName() 
		Method m1 = pro.getWriteMethod();// name set , setName() 
		System.out.println(m.invoke(p));// Method 
		break;
	}
}
/* */
PropertyDescriptor pro = new PropertyDescriptor("name", p.getClass());// Class
Method m1 = pro.getReadMethod();//  get 
Method m1 = pro.getWriteMethod();//  set 
System.out.println(m1.invoke(p));

4.BeanUtilsツールは、ツールBeanUtils(Download BeanUtilsおよびDownload Commons Logging)BeanUtilsを使用することもできる.setProperty(p, "age", "120");//クラスオブジェクト--対応フィールド(受信文字列)--Obj(setメソッドで受信パラメータ、Objectタイプ)BeanUtilsを受信.getProperty(p, "age");//「クラス・オブジェクト」--対応するフィールド(受信文字列)