如何通过java中的BeanInfo <i>访问私有字段</i>

时间:2013-12-02 06:17:24

标签: java reflection field private beaninfo

我知道如何通过Class.forName()和Field []访问私有字段。 现在我通过BeanInfo Interface尝试同样的东西。

我的所作所为。

  1. 通过Class.forName()

  2. 获取Class实例
  3. BeanInfo info = Introspector.getBeanInfo(Class) - 在这里,我可以看到'org.owls.anno.vo.Target'。

  4. 通过语法获取元素。

    for(PropertyDescriptor pd:info.getPropertyDescriptors()){ log.info(pd.getName()); log.info(pd.getDisplayName()); log.info(pd.getPropertyType()); }

  5. 我期待字段名称列表(msg,open_msg),但它打印'class.java.lang.Class'。

  6. 目标类在这里

    package org.owls.anno.vo;
    
    import org.owls.anno.SimpleAnnotation;
    
    @SimpleAnnotation("Add missing attributes")
    public class Target {
        private String msg;
        public String open_msg;
    
        public Target(String msg) {
            super();
            this.msg = msg;
        }
    
        @Override
        public String toString() {
            return "Target [msg=" + msg + "]";
        }
    };
    

    感谢答案:D

1 个答案:

答案 0 :(得分:1)

你的类不是bean:没有访问者(getter和/或setter)......除了getClass()