1

このクラスがあるとします

public static final class MyClass { 

    public static final int A = 4 ;

    public static final int[] B = { 1, 2, 3, 4 };
}

リフレクションを介して上記のクラスとそのフィールド値にアクセスする必要があります

Class<?> myClass = getDesiredClass("MyClass"); 

これでAの値を取得できます

int a = myClass.getField("A").getInt(myClass);

しかし、B の値を取得するには、Field のどのメソッドを使用する必要がありますか?

 int[] b = myClass.getField("B").?
4

2 に答える 2

4

Anint[]は であるため、静的フィールドには引数が必要ないため、-- または代わりに をObject使用します。(int[]) get(myClass)(int[]) get(null)

于 2013-01-08T20:32:09.340 に答える
2

これらはすべて等価です。私は最も単純なものを選びます。;)

int[] b = MyClass.B;
int[] b = (int[]) MyClass.class.getField("B").get(null);
int[] b = (int[]) Class.forName("MyClass").getField("B").get(null);
于 2013-01-08T20:34:15.990 に答える