首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

反照获取对象成员的字段值,getFields()和getDeclaredFields()用法区别

2013-03-12 
反射获取对象成员的字段值,getFields()和getDeclaredFields()用法区别  用反射获取内部类的属性其实很简单

反射获取对象成员的字段值,getFields()和getDeclaredFields()用法区别
  用反射获取内部类的属性其实很简单。。我弄了半天才弄好,由于很弱智的原因啊,写此博文已吸取教训。  虽简单,但是太坑爹了,getFields()只能获取public的字段,包括父类的。  而getDeclaredFields()只能获取自己声明的各种字段,包括public,protected,private。  而我写的Characters类中的属性是在继承父类的,父类中是protected的,所以获取不到,这个弄了我半天!最后只要把父类的protected属性全改成public的就ok了啊。。
  还有getFields()和getDeclaredFields(),返回的都是Field对象,获取名称直接field.getName(),但是属性值则是field.get(Object),这个object是该field所属的!!!
  太坑爹了,绕了好多弯啊!!!不过这样却对反射获得字段有了深刻的理解。  具体代码如下:

public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, InstantiationException {Class<Character> c = Character.class;FreemarkerGenEntity generator = new FreemarkerGenEntity();generator.init();generator.genFile(c, "d:\\test\\");}

这样就没问题了!

热点排行