如何在java中用类获得一个常量

2022-09-04 05:37:10

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

我需要它来促进动态获取方法调用

Class parameterType = Class.forName(class_name);
object.setProperty(field name, field value, parameterType);

然后,set属性方法将获得正确的方法并设置指定的属性,但是如果不使用Interger.TYPE,我就无法获得将int作为参数类型的方法。


答案 1

你可能会寻找sth。喜欢
或(感谢 f-o-o Foo.class.getDeclaredField("THIS_IS_MY_CONST").get(null); Class.forName("Foo").getDeclaredField("THIS_IS_MY_CONST").get(null); )

获取类 Foo 中字符串常量 (THIS_IS_MY_CONST) 的值。

更新使用作为感谢 acdcjunior 的参数nullget


答案 2

如果这个常量是关于类的元数据,我会用注释来做到这一点:

第一步,声明注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Abc {
    String value(); 
}

第二步,为类添加注释:

@Abc("Hello, annotations!")
class Zomg {

}

第三步,检索值:

String className = "com.example.Zomg";
Class<?> klass = Class.forName(className);
Abc annotation = klass.getAnnotation(Abc.class);
String abcValue = annotation.value();
System.out.printf("Abc annotation value for class %s: %s%n", className, abcValue);

输出为:

Abc annotation value: Hello, annotations!

推荐