java中的内省 (Introspector)

2、JavaBean:》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)一种特殊类,传递数据信息,成员方法用于访问自身私有字段,方法名符合某种命名规则;

(2)俩模块传递信息,使用JavaBean(值对象(Value Object),或“VO”);

(3)信息存储在私有变量中,通过set()、get()获得;

3、什么是内省(Introspector):》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)JDK提供一套 API 用来访问某个属性的 getter/setter 方法;

(2)java语言对JavaBean类的属性、事件的一种缺省处理方法;

4、PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法:》》》》》》》

      1. getPropertyType(),获得属性的Class对象;
      2. getReadMethod(),获得用于读取属性值的方法;

           3.getWriteMethod(),获得用于写入属性值的方法;
      3. hashCode(),获取对象的哈希值;
      4. setReadMethod(Method readMethod),设置用于读取属性值的方法;
      5. setWriteMethod(Method writeMethod),设置用于写入属性值的方法。

5、Introspector类:》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)封装JavaBean属性进行操作;

(2)调用BeanInfo beanInfo=Introspector.getBeanInfo(),将一个类当成是JavaBean;

(3)PropertyDescriptor[] proDescrtptors=beanInfo.getPropertyDescriptors();

6、BeanUtils:》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)内省操作非常繁琐,所以Apache开发了一套简单、易用的API操作Bean属性:BeanUtils工具包;

(2)org.apache.commons.beanutils.BeanUtils;

(3)BeanUtils.setProperty(userInfo,"age",8);

7、BeanUtils特点:》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)对基本类型自动转换;

(2)引用类型类中必须有对象,不能是null;

8、struts就用了内省机制,有set方法就有属性,不需要成员变量;》》》》》》》》》》》》》

9、java中的反射(reflection):》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

(1)运行时获取一个类的所有信息,包括.class的任何定义的信息(成员 变量,成员方法,构造器等);

(2)可以操纵类的字段、方法、构造器等部分;

(3)内省基于反射实现,主要用于操作JavaBean,获取bean的getter/setter;

猜你喜欢

转载自my.oschina.net/u/3847203/blog/1808712