有点奇怪的要求。
public class DummyClass{
public static final DummyClass var1;
public static final DummyClass var2;
public static final DummyClass var3;
.
.
.
public static final DummyClass var100;
}
现在,从这个类的外部我们可以将这个var汇集到一个数组或列表中,以便我可以迭代它们吗?就像我做的那样
List<DummyClass> dummyList = *some op*; //I want value of some op.
我应该可以访问var1 ... var100
答案 0 :(得分:30)
你可以使用反射:
Field[] fields = DummyClass.class.getDeclaredFields();
for (Field f : fields) {
if (Modifier.isStatic(f.getModifiers()) && isRightName(f.getName())) {
doWhatever(f);
}
}
答案 1 :(得分:0)
如果您的类具有常量,并且想要获取Java常量的实际值,则可以执行以下操作:
List<String> constantValues = Arrays.stream(DummyClass.class.getDeclaredFields())
.filter(field -> Modifier.isStatic(field.getModifiers()))
.map(field -> {
try {
return (String) field.get(DummyClass.class);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
})
.filter(name -> ! name.equals("NOT_NEEDED_CONSTANT") // filter out if needed
.collect(Collectors.toList());