考虑以下代码:
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()
方法在此上下文中访问静态变量吗?
答案 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;
}
}