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()返回 a Class<?>,并且i不是 的成员Class。您可以使用getClass() 后跟反射来获取字段值,但完全不清楚您要在这里实现什么 - 在您给出的示例中(这是我们必须通过的)只需使用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 回答