有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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()方法可以用来访问静态变量吗


共 (2) 个答案

  1. # 1 楼答案

    不是这样,no.getClass()返回一个Class<?>,并且i不是Class的成员。您可以使用getClass()后跟反射来获取字段值,但根本不清楚您在这里试图实现什么——在您给出的示例中(这就是我们要做的),简单地使用A.i会更简单、更清晰

  2. # 2 楼答案

    也许这段代码回答了你的问题:

    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;
        }
    }