Как получить доступ к приватному полю через BeanInfo<I> в Java

Я знаю, как получить доступ к закрытым полям через Class.forName() и Field[]. Теперь я пытаюсь сделать то же самое через интерфейс BeanInfo.

То, что я сделал, ниже.

  1. получить экземпляр класса через Class.forName()

  2. BeanInfo info = Introspector.getBeanInfo (Class) - Здесь я вижу "org.owls.anno.vo.Target".

  3. получить элементы через синтаксис.

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

  4. Я ожидал список имен полей (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()!

Другие вопросы по тегам