读书人

内省的施用

发布时间: 2012-12-18 12:43:41 作者: rapoo

内省的使用

针对JavaBean
? 什么是JavaBean?(私有的字段/公开的空参构造方法/每个字段存取方法)
? PropertyDescriptor表示:描述哪个字节码对象和该类的属性
? pd.getWriteMethod():相当于setter()方法
? pd.getReadMethod():相当于getter()方法
? BeanInfo表示:某个字节码对象的所有属性的描述
? 任务类都会至少有一个class属性

package cn.itcast.javase.introspector;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import org.junit.Test;public class Demo1 {@Testpublic void test1() throws Exception{Student s = new Student();//描述某个JavaBean的属性描述器//参数一:表示描述哪个属性//参数二:表示描述哪个类的字节码对象PropertyDescriptor pd = new PropertyDescriptor("name",Student.class);Method writer = pd.getWriteMethod();writer.invoke(s,"jack");System.out.println(s.getName());}@Testpublic void test2() throws Exception{//取得JavaBean对象的所有属性描述对象BeanInfo bi = Introspector.getBeanInfo(Student.class);//取得该JavaBean对象所有属性的集合PropertyDescriptor[] pds = bi.getPropertyDescriptors();for(PropertyDescriptor pd : pds){//显示属性的名称System.out.println(pd.getName());}//结论:属性是含有getXxxxx(),该xxxxx是属性名}}

?

读书人网 >编程

热点推荐