java内省机制运用

      引文:     

      内省是Java语言对属性的一种缺省处理方法。       
      例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。

      Java中提供了一套API用来访问某个属性的getter/setter,这些api在包java.beans中 , 一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器,通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后就是通过反射机制来调用这些方法。 就好像Struts中的FormBean就是通过内省机制来将表单中的数据映射到类的属性上,因此要求FormBean的每个属性要有getter/setter方法。

      上文是引用了liusoft(红薯)对内省的解释。

      最近在做一个通用excel导出功能,主要的数据源是从数据库导出到excel,因此不是页面导出。如果页面导出到excel,只需要将html 的表格信息直接传送至java,并且以流形式刷出到页面即可。这里结合了jxl导出到excel的功能。

      讲正文:通常我们的系统中会有很多grid表格展现,而且很多时候我们需要进行分页,因此对于需要导出所有数据时,我们只能从数据库中获取数据经过一些拼装组合,然后以流的形式刷到页面。而恰恰是很多功能都需要用到导出,因此很多地方会用到不同的bean[其实也就是对象数据存储层],调用一个公用的方法,

/**
  * 导出到excel  * 
  * @param displayTitle:显示列的名称集合
  * @param displayField:显示的字段集合[类中的属性]
  * @param dataSource:数据源
  */
exportExcel(List<String> displayTitle,List<String> displayField,List dataSource,HttpServletResponse response),这里如何对dataSource中的存储对象是什么类,拥有哪些属性,拥有哪些方法?因此就需要通过java内省机制来解决。

例如:

    Object obj = dataSource.get(0); //获取第一个数据对象
    BeanInfo bean = Introspector.getBeanInfo(obj.getClass());//获取对象类
    PropertyDescriptor[] propertys = bean.getPropertyDescriptors();//获取对象类的所有属性,这里包括继承类的属性 

    propertys[0].getReadMethod().invoke(obj, new Object[]{});//获取第一个属性的值

这样,我们就可以很方便的取出所想要获取的属性值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值