您的位置:首页 > 编程语言 > Java开发

Java之内省机制

2016-01-10 22:23 337 查看
内省(Introspecter)用来操作JavaBean属性

JavaBean:用来封装数据的Java类(一般要重写toString方法)

属性:对外提供getter或setter方法的属性(field) 因为Object是所有类的基类,所以每个类都有一个class属性 (getClass方法)

核心类和接口

Introspecter

方法: staticBeanInfo getBeanInfo(Class beanclass)

static BeanInfo getBeanInfo(Classbeanclass ,Class stopClass)

*stopClass排除例如父类Object中的属性

PropertyDescriptor

PropertyDescriptor[] pds=beaninfo.getPropertyDescriptors();

StringpropertyName=pds[0].getName();

pds[0].getPropertyType();

Method

Method m1= pds[0].getWriteMethod();

Method m2=pds[0].getReadMethod();

Demo代码片段:

1

2

3

4

5

6

7

8

9

10

11

12

13

Person p=new Person();

BeanInfo beaninfo=IntroSpector.getBeanInfo(Person.class);

PropertyDescripter[ ] pds=beaninfo.getPropertyDescriptors();

For(PropertyDescriptor pd :pds){

System.out.println(pd.getName());//打印属性名

System.out.println(pd.getPropertyType());//打印属性类型

Method m1=pd.getWriteMethod();//获得setter方法

M1.invoke(p,23);//调用setter方法

Method m2=pd.getReadMethod();//获得getter方法

System.out.println(M2.invoke(p,null));//调用setter方法

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: