Thinking in sky

--老贺的BLOG

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 0 文章 :: 35 评论 :: 0 Trackbacks
        系统中需要一个方法,方法参数为任意对象,要求找到该对象的所有属性名和属性值,当然必须要用到反射了。查了会API,发现JAVA反射功能果然强大,一下就找到了需要的函数。
1//roleVO为RoleVO类的对象, 返回该类的所有属性的数组
2Field[] fields =  roleVO.getClass().getFields();
3
4for(i=0; i<fields.length; i++){
5    //得到 属性名            
6    String fieldName = fields[i].getName();
7
8       //得到roleVO对象中该属性的值
9    int value = fields[i].getInt(roleVO);    
Field类根据属性类型的不同对应不同的方法,如getFloat(),getLong(),参数必须为该类的对象。如果不指定类型也可以:get(),属性是什么类型它就返回什么类型,其它更详细的就要查看API文档了。
posted on 2007-05-15 13:28 老贺 阅读(471) 评论(1)  编辑  收藏 所属分类: JAVA基础

评论

# re: 毕业设计笔记(3)--反射[未登录] 2007-08-23 10:50 小贺
Class的getFields()方法返回此Class 对象所表示的类或接口的所有public属性。如果该 Class 表示一个类,则此方法返回该类及其所有超类的public属性。
如果该 Class 表示一个接口,则此方法返回该接口及其所有超接口的public属性。
private和protected的属性是不能得到。

毕业设计的系统里面,我为了获得VO中属性的name和value,把原本的private改成了public,这样做肯定是有隐患的。SpringSide里也有这个需求,但是他新包装了一个方法,可以强行读取或设置对象变量值,忽略private,protected修饰符的限制。为什么我开始就没想到呢?  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: