次のコードを検討してください。
class A {
static int i=3;
}
public class TT extends A {
public static void main(String[] args) {
System.out.println(new A().getClass().i);
}
}
getClass()
メソッドを使用して、このコンテキストで静的変数にアクセスできますか?
次のコードを検討してください。
class A {
static int i=3;
}
public class TT extends A {
public static void main(String[] args) {
System.out.println(new A().getClass().i);
}
}
getClass()
メソッドを使用して、このコンテキストで静的変数にアクセスできますか?
そうじゃない、いいえ。getClass()
を返し、Class<?>
のi
メンバーではありませんClass
。getClass()
フィールド値を取得するためにリフレクションA.i
を使用することもできますが、ここで何を達成しようとしているのかはまったく明確ではありません.よりシンプルに、より明確に。
おそらく、このコードはあなたの質問に答えます:
package com.cc.test;
import java.lang.reflect.Field;
public class TestMain {
public static void main(String[] args) throws Exception {
Class theClass = Class.forName("com.cc.test.TestMain$MyClass");
Field theField = theClass.getField("myField");
int theValue = theField.getInt(null); // null only works if myField is static
System.out.println(theValue); // prints 99
}
private static class MyClass {
public static int myField = 99;
}
}