如何用java获取java中的常量

lux*_*ama 11 java reflection constants dynamic

基本上我需要为一个类获取一个常量,但是我没有该对象的实例,只有它的类.在PHP中,我会做constant(XYZ); 一个类似的方法来检索JAVA中的常量吗?

我需要它来促进动态getMethod调用

Class parameterType = Class.forName(class_name);
object.setProperty(field name, field value, parameterType);
Run Code Online (Sandbox Code Playgroud)

然后set属性方法将获取正确的方法并设置指定的属性,但是我不能使用int作为参数类型而不使用Interger.TYPE

use*_*155 33

你可能会寻找...... 像
Foo.class.getDeclaredField("THIS_IS_MY_CONST").get(null); Class.forName("Foo").getDeclaredField("THIS_IS_MY_CONST").get(null); (感谢FOO)

获取类Foo中的String常量(THIS_IS_MY_CONST)的值.

更新null用作get感谢acdcjunior的参数

  • 因为它是一个`静态`字段,`Foo.class.getDeclaredField("MY_CONST").get(null);`是获取其值的正确方法.(答案中的`String.class`参数被忽略,实际上是误导性的.) (4认同)
  • 请注意,传递给 `Field#get(Object)` 方法的 `String.class` 参数对于静态字段没有实际意义 - 根据 javadoc: > 如果底层字段是静态字段,则忽略 obj 参数;它可能为空。因此该参数并不意味着字段值将是一个字符串并且可以为空。 (2认同)

She*_*ari 2

我不确定你想得到什么。但向您展示一个例子应该不会太困难。

假设您有一个带有属性栏的 Foo 类。

Class Foo {
    private final String bar = "test";
    public String getBar() {return bar;}
}
Run Code Online (Sandbox Code Playgroud)

现在,要通过反思来实现这一点,您将:

Class fooClass = Foo.class;
Object fooObj = fooClass.newInstance();
Method fooMethod = fooClass.getMethod("getBar");
String bar = (String) fooMethod.invoke(fooObj);
Run Code Online (Sandbox Code Playgroud)

现在您将在 bar 变量中获取方法 getBar() 的值