反射获取对象成员的字段值,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\\");}