Как получить доступ к приватному полю через BeanInfo<I> в Java
Я знаю, как получить доступ к закрытым полям через Class.forName() и Field[]. Теперь я пытаюсь сделать то же самое через интерфейс BeanInfo.
То, что я сделал, ниже.
получить экземпляр класса через Class.forName()
BeanInfo info = Introspector.getBeanInfo (Class) - Здесь я вижу "org.owls.anno.vo.Target".
получить элементы через синтаксис.
for (PropertyDescriptor pd: info.getPropertyDescriptors ()) {log.info (pd.getName ()); log.info (pd.getDisplayName ()); log.info (pd.getPropertyType ()); }
Я ожидал список имен полей (msg, open_msg), но он выводит "class.java.lang.Class".
Целевой класс здесь
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 ответ
Решение
Ваш класс не является бобом: нет аксессора (геттера и / или сеттера)... кроме getClass()
!