0

(クラスからではなく) インスタンスから Field 参照を取得する方法はありますか?

これは例です:

public class Element {
    @MyAnnotation("hello")
    public String label1;

    @MyAnnotation("world")
    public String label2;
}

public class App {
    private Element elem = new Element();

    public void printAnnotations() {
        String elemLabel1 = elem1.label;
        String elemLabel2 = elem2.label;

    // cannot do elemLabel.getField().getDeclaredAnnotations();
        String elemLabel1AnnotationValue = // how ? 
        String elemLabel2AnnotationValue = // how ? 
    }
}

明確でなくて申し訳ありませんが、クラスからフィールドを取得する方法は既に知っています (クラス --> フィールド --> DeclaredAnnotations)。

私が疑問に思っているのは、特定のインスタンスのフィールドを取得する方法です。この例では、elemLabel1 文字列インスタンスから、Element.label1 の Field を取得できるようにしたいと考えています。

4

2 に答える 2

2

Fieldクラスに属します。したがって、実際には次のことを行います。

elemLabel.getClass().getField("theFieldName").getDeclaredAnnotations();

ただし、フィールドはpublic通常、すべてのフィールドはprivate. この場合、getDeclaredField()の代わりに使用しgetField()ます。

フィールドを使用する前に編集する必要がfield.setAccessible(true)あります。

于 2013-05-13T06:29:34.953 に答える