内省(Introspector)
l为什么要学内省?
开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。
l什么是Java对象的属性和属性的读写方法?
l内省访问JavaBean属性的两种方式:
•通过PropertyDescriptor类操作Bean的属性
•通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),
通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。

l内省是 Java 语言对 Bean 类属性的一种缺省处理方法。例如类 A 中有属性 name, 可以通过 getName,setName 来得到其值或者设置新的值。
通过 getName/setName 来访问 name 属性,这是默认的规则。 Java 中提供了一套 API 来访问某个属性的 getter/setter 方法。
l一般的做法是通过类 Introspector 来获取某个对象的BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器(PropertyDescriptor ),
通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法


l

内省beanutils工具包

Java SE 加强内省、反射

lSun公司的内省API过于繁琐,所以Apache组织结合很多实际开发中的应用场景开发了一套简单、易用的API操作Bean的属性——BeanUtils

lBeanutils工具包的常用类:

BeanUtils
PropertyUtils
ConvertUtils.regsiter(Converter convert, Class clazz)
自定义转换器




反射

l一个类有多个组成部分,例如:成员变量,方法,构造方法等。反射就是加载类,并解剖出类的各个组成部分
l
l编程时什么情况下才需要加载类,并解剖出类的各个组成部分呢?

Java反射所需要的类并不多,主要有java.lang.Class类和java.lang.reflect包中的FieldConstructorMethodArray类。
注意:Class类是Java反射的起源,针对任何一个你想探勘的类,只有先为它产生一个Class类的对象,接下来才能通过Class对象获取其他想要的信息。
l


lClass类
l
Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射


Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射

Java SE 加强内省、反射



相关文章: