有 Java 编程相关的问题?

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

java如何访问一个类的静态值,该类只有一个class类型的引用

考虑到A类:

public class A {
    public static final CONSTANT = "i am a static final member";
}

并且具有引用A类的Class类型的变量:

Class c = A.class;

如何使用c变量访问CONSTANT,而不构建类A的实例:

 // all these will certainly not work
c.CONSTANT;
c.getStatic().CONSTANT;

共 (2) 个答案

  1. # 1 楼答案

    获取CONSTANT值的最简单方法是:

    c.getDeclaredField("CONSTANT").get(null)
    

    Field.get文档:

    If the underlying field is a static field, the obj argument is ignored; it may be null.

  2. # 2 楼答案

    您可以使用java reflection在运行时获取此类信息。 例如,反射允许您检查属于任何类对象的任何字段

    在您的情况下,该字段是publicstatic,因此下面的代码

    String constantValue = c.getField("CONSTANT").get(null);
    

    会有用的

    (getField()搜索公共字段;get()需要一个“对象”来处理;但对于静态场,参数无关紧要;所以它可以是空的)