我需要在应用程序初始化时从不同的类中获取静态值,我使用的是@PostConstruct,我不知道如何在不创建每个类的实例的情况下检索所有这些值
答案 0 :(得分:0)
在类上尝试静态初始化器
public class OtherClass {
public static final String VALUE = "SomeValue";
}
public class SomeClass {
static {
OtherClass.VALUE;
}
}
做任何你想做的事。
答案 1 :(得分:0)
您可以进行用户反思(甚至可以动态传递类名):
package com.example;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class Main {
public static void main(String[] args)
throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException {
printStaticFieldsAndValues("com.example.ClassWithStaticFields");
}
private static void printStaticFieldsAndValues(String className)
throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException {
Class clazz = Class.forName(className);
for (Field f : clazz.getDeclaredFields()) {
if (Modifier.isStatic(f.getModifiers())) {
System.out.println("Name: " + f.getName());
System.out.println("Value " + f.get(null));
}
}
}
}
具有静态字段的类:
package com.example;
public class ClassWithStaticFields {
static String stringField = "String Value";
}
输出:
Name: stringField
Value String Value