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代码片段:
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方法 } |
相关文章推荐
- Spring源代码解析(二):IoC容器在Web容器中的启动
- java集合框架总结
- Java多线程学习(吐血超详细总结)
- Eclipse执行片段
- javax.el.PropertyNotFoundException: Property 'XXX' not readable
- SpringAOP
- Java Nio 六、Java NIO通道到通道的传输
- 快速排序普通法与中值枢纽元法以及三切法
- Simple Java—Strings and Arrays(一)String是引用传值吗?
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springfr
- JDK安装不成功
- [基础]Java编程中自加,自减易被忽视的一个地方,打印命令的输出
- Java 编程下的同步代码块
- 大话设计模式之状态模式(java版实现)
- [基础]关于Java强制转换中无法强制转换String的思考
- 【Spring】Spring实战(二)——装配Bean
- Java NIO文件复制以及与传统IO效率对比
- Mac下Eclipse内存设置修改以及安装MAT
- Java [Leetcode 326]Power of Three
- myeclipse/eclipse安装反编译插件jadclipse