Java内省的学习
来源:互联网 发布:开淘宝店做代理好不好 编辑:程序博客网 时间:2024/06/05 18:16
内省
内省是与反射类似的技术,它是以规范化的Java bean为模板,将类中的成员变量和getter、setter方法关联起来
它的一般用法是:
使用Java反射解析Java类的结构,把字段和该字段对应的setter、getter方法关联起来,封装到PropertyDescriptor(属性描述器)中。通过属性描述器可以直接获得该字段的setter、getter方法的Method对象,进而根据实际需要进行操作。
关于内省中常用类或方法的介绍与常见使用:
- BeanInfo
Use the BeanInfo interface to create a BeanInfo class and provide explicit information about the methods, properties, events, and other features of your beans.
使用BeanInfo接口创建一个BeanInfo类,并提供关于bean的方法、属性、事件和其他特性的明确信息。
- Introspector
The Introspector class provides a standard way for tools to learn about the properties, events, and methods supported by a target Java Bean.
内省类为工具提供了一种标准的方法来了解目标Java Bean所支持的属性、事件和方法。
- PropertyDescriptor
PropertyDescriptor描述了通过一对访问器方法导出的Java Bean的一个属性。
常用方法:
getPropertyType():获取属性的数据类型
getReadMethod():获取属性的get方法
getWriteMethod() :获取属性的set方法
- MethodDescriptor
常用方法:
getMethod():获取方法描述器中的方法
以下是代码:
public class User implements Serializable { private static final long serialVersionUID = -3015143840907090098L; private String name; private String age; public User(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}
Class clazz=User.class;Object obj=clazz.newInstance();BeanInfo bean = Introspector.getBeanInfo(clazz); PropertyDescriptor[] descriptors =bean .getPropertyDescriptors();for (PropertyDescriptor propertyDescriptor : descriptors) { //我是试验时 这里输出属性名 多了class 应该是来自于Object //而serialVersionUID则没有输出 这跟getDeclaredFields()有些区别 System.out.println(propertyDescriptor.getName()); //获得属性的set方法,并给出参数调用 Method writeMethod = propertyDescriptor.getWriteMethod(); writeMethod.invoke(obj, args); //获得属性的get方法,并调用 Method readMethod = propertyDescriptor.getReadMethod(); readMethod.invoke(obj);}
MethodDescriptor[] methods = bean.getMethodDescriptors();for (MethodDescriptor methodDescriptor : methods ) {//获得了Method对象 就跟反射中的操作类似了 Method method=methodDescriptor.getMethod();}
以上若有解释不当或错误,请指出,谢谢!
- Java内省的学习
- 内省的学习的java代码
- 内省的学习
- java的内省机制
- Java的内省技术
- java 内省的使用
- java的内省
- Java内省的使用
- 浅谈java的内省
- Java的内省
- Java-内省(学习笔记)
- 黑马程序员Java学习笔记__javaBean的内省机制
- 黑马程序员—java基础学习--JavaBean的内省操作
- 内省和javaBean的学习
- java的内省和反射
- Java的内省(introspector)
- java的内省与反射
- java的反射和内省
- 实验楼之一个简单的课程数据库
- Oracle中before触发器中伪列的使用
- 数据类型
- Windows编程基础--第2节 win32程序资源管理
- shell编程学习(一)
- Java内省的学习
- Hdu 2053 Switch Game 推结论? 找规律?解题报告
- RxJava——第一个小程序HelloWorld
- Day2
- 进程同步
- hive+hbase 细节详解
- AKKA日志
- 史上最全ajax全套讲解
- 1077. Kuchiguse (20)