考虑这段代码:
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()
返回 a 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;
}
}