getClass()方法可以用来访问静态变量吗?

时间:2012-04-16 18:49:56

标签: java class static-variables

考虑以下代码:

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()方法在此上下文中访问静态变量吗?

2 个答案:

答案 0 :(得分:9)

不是那样,不。 getClass()返回Class<?>,而i不是Class的成员。你可以使用getClass() 后跟反射来获取字段值,但是你完全不知道你想要在这里实现什么 - 在你给出的例子中(这是我们只需要使用A.i就可以更简单,更清晰。

答案 1 :(得分: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;
    }
}