Java内省技术
来源:互联网 发布:windows搭建hadoop 编辑:程序博客网 时间:2024/06/16 03:52
Java的内省技术与反射技术关系密切,内省机制是通过反射来实现的。
根据JavaBean对象,以及属性名,构造出PropertyDescriptor对象,
通过PropertyDescriptor对象的getWriteMethod(),getReadMethod()
方法或者Method反射对象,调用其invoke方法修改或者获取对象的属性值
public static void getProperty(UserInfo userInfo,String userName)throws Exception{
PropertyDescriptor proDescriptor = new PropertyDescriptor(userName,UserInfo.class);
Method methodGetUserName=proDescriptor.getReadMethod();
Object objUserName=methodGetUserName.invoke(userInfo);
System.out.println("get userName:"+objUserName.toString());
}
(2)通过Introspector,BeanInfo来获取或修改属性
根据Introspector的静态方法getBeanInfo,传入JavaBean的class对象,
得到BeanInfo对象,再根据BeanInfo的getPropertyDescriptors方法得到PropertyDescriptor数组,
遍历该数组,根据PropertyDescriptor的getName()方法得到的属性与要访问的属性进行匹配,
如果匹配上,调用PropertyDescriptor的getWriteMethod(),getReadMethod()
方法或者Method反射对象,调用其invoke方法修改或者获取对象的属性值
(3)导入第三方jar包,使用BeanUtils,PropertyUtils来访问或修改属性
BeanUtils工具包:下载:http://commons.apache.org/beanutils/
注意:应用的时候还需要一个logging包http://commons.apache.org/logging/
BeanUtils.setProperty()
BeanUtils.getProperty()
PropertyUtils.setProperty()
PropertyUtils.getProperty()
这两个工具设置属性的时候一个主要区别是:
PropertyUtils.getPropety方法获得的属性值的类型为 该属性本来的类型,
而BeanUtils.getProperty则是将该属性的值转换成字符串后才返回。
常用类:BeanInfo, Introspector,PropertyDescriptor,Class,Method,Field,Constructor等
根据JavaBean对象,以及属性名,构造出PropertyDescriptor对象,
通过PropertyDescriptor对象的getWriteMethod(),getReadMethod()
方法或者Method反射对象,调用其invoke方法修改或者获取对象的属性值
public static void getProperty(UserInfo userInfo,String userName)throws Exception{
PropertyDescriptor proDescriptor = new PropertyDescriptor(userName,UserInfo.class);
Method methodGetUserName=proDescriptor.getReadMethod();
Object objUserName=methodGetUserName.invoke(userInfo);
System.out.println("get userName:"+objUserName.toString());
}
(2)通过Introspector,BeanInfo来获取或修改属性
根据Introspector的静态方法getBeanInfo,传入JavaBean的class对象,
得到BeanInfo对象,再根据BeanInfo的getPropertyDescriptors方法得到PropertyDescriptor数组,
遍历该数组,根据PropertyDescriptor的getName()方法得到的属性与要访问的属性进行匹配,
如果匹配上,调用PropertyDescriptor的getWriteMethod(),getReadMethod()
方法或者Method反射对象,调用其invoke方法修改或者获取对象的属性值
(3)导入第三方jar包,使用BeanUtils,PropertyUtils来访问或修改属性
BeanUtils工具包:下载:http://commons.apache.org/beanutils/
注意:应用的时候还需要一个logging包http://commons.apache.org/logging/
BeanUtils.setProperty()
BeanUtils.getProperty()
PropertyUtils.setProperty()
PropertyUtils.getProperty()
这两个工具设置属性的时候一个主要区别是:
PropertyUtils.getPropety方法获得的属性值的类型为 该属性本来的类型,
而BeanUtils.getProperty则是将该属性的值转换成字符串后才返回。
阅读全文
0 0
- Java的内省技术
- Java 内省技术(Introspector)
- java-内省技术解析
- java之内省技术
- Java内省技术
- Java内省技术
- 内省技术
- Java中的反射与内省技术内幕
- JAVA 内省
- java 内省
- java 内省
- Java内省
- java内省
- java内省
- java--内省
- Java内省
- java内省
- Java内省
- Altium Designer 技巧备忘
- 虚继承初始化的底层实现
- 负载均衡集群LVS
- 随机性模型学习----- 蒙特卡洛模拟
- 【洛谷2912】[USACO08OCT]牧场散步Pasture Walking
- Java内省技术
- NOIP2017 考前汇总
- HDU 4403 A very hard Aoshu problem (DFS+状压)
- ImageLoader----苏苏的小弟子
- JAVA8高级新特性课程+Java Util Concurrency+Java NIO视频教程
- JZOJ5466. 【NOIP2017提高A组冲刺11.9】玩游戏
- Android全屏化
- 计算并输出1到n之间的所有数的平方和立方。
- 数据结构实验之二叉树六:哈夫曼编码