0

次のコードを検討してください。

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()メソッドを使用して、このコンテキストで静的変数にアクセスできますか?

4

2 に答える 2

9

そうじゃない、いいえ。getClass()を返し、Class<?>iメンバーではありませんClassgetClass() フィールド値を取得するためにリフレクションA.iを使用することもできますが、ここで何を達成しようとしているのかはまったく明確ではありません.よりシンプルに、より明確に。

于 2012-04-16T18:51:15.373 に答える
0

おそらく、このコードはあなたの質問に答えます:

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;
    }
}
于 2012-04-16T22:53:31.773 に答える