使用反射访问静态最终变量

M S*_*M S 16 java reflection static

我有一个带有静态变量的Java类

package com.mytest
public class MyClass{
    public static final TextClass TEXT_CLASS = new TextClass();
}
Run Code Online (Sandbox Code Playgroud)

如何TEXT_CLASS使用反射访问对象?

(我有字符串"com.mytest.MyClass.TEXT_CLASS".我需要访问该对象.)

soc*_*a23 35

访问静态字段的方式与普通字段完全相同,只是您不需要将任何参数传递给Field.get()方法(您可以传递null).

试试这个:

Object getFieldValue(String path) throws Exception {
    int lastDot = path.lastIndexOf(".");
    String className = path.substring(0, lastDot);
    String fieldName = path.substring(lastDot + 1);
    Class myClass = Class.forName(className);
    Field myField = myClass.getDeclaredField(fieldName);
    return myField.get(null);
}
Run Code Online (Sandbox Code Playgroud)

  • 可能要添加: myField.setAccessible(true); 在那里。 (2认同)