01-Introspector内省机制
在java领域编程中,内省机制相当的不错,可以省去我们程序员很多的不必要的代码
比如说:在jdbc工具类 我们可以将ResultSet结果集待到 javabean对象中
将http请求报文的数据 转换到一个 javabacn对象当中去 这样子可以省去我们很多的 request.getparameter('name') request.getparameter("password")
还有理解各种持久框架 都是用到了内省机制编程 很重要,很重要,很重要
java内省机制核心类是 Introspector
来一个示例吧!
先写一个用户Bean类
package com.oa.domain; import lombok.Data; /** * 注明:我这里使用了 lombok工具来自动生成 getter/setter方法 * 如果你没有配置,则自己手动写 getter/setter方法吧!!! * @author Administrator * */ @Data public class User { private Integer id; //用户Id private String userName; //用户名 private String password; //密码 }
使用内省机制获取所有的属性
package com.oa.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import com.oa.domain.User; public class Demo1 { /** * 刘诗华 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //获取User Bean字节码 BeanInfo beanInfo = Introspector.getBeanInfo(User.class); //获取所有的属性集合 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : propertyDescriptors) { System.out.println("属性名:"+pd.getName()); } // 打印结果如下显示 // 属性名:class class是继承 extends Object类上面的属性 // 属性名:id // 属性名:password // 属性名:userName } }
注意:如果我们只想要 User类中的所有属性 那我们只需要在获取的时候加上参数 Introspector.getBeanInfo(User.class,Object.class);
//获取User Bean字节码 BeanInfo beanInfo = Introspector.getBeanInfo(User.class,Object.class); //获取所有的属性集合 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : propertyDescriptors) { System.out.println("属性名:"+pd.getName()); }
属性名:id
属性名:password
属性名:userName

浙公网安备 33010602011771号