我可以想到两个比使用反射更好的解决方案.
>任何体面的IDE都会自动填写switch语句.我使用IntelliJ并执行此操作(您只需按ctrl-enter).我确信Eclipse / Netbeans有类似的东西;和
>对于常量而言,枚举比公共静态原语更好.增加的优势是它们可以解除您的这个问题.
但要通过反思找出你想要的东西,假设:
interface Foo {
public static final int CONST_1 = 1;
public static final int CONST_2 = 3;
public static final int CONST_3 = 5;
}
跑:
public static void main(String args[]) {
Class c = Foo.class;
for (Field f : c.getDeclaredFields()) {
int mod = f.getModifiers();
if (Modifier.isStatic(mod) && Modifier.isPublic(mod) && Modifier.isFinal(mod)) {
try {
System.out.printf("%s = %d%n", f.getName(), f.get(null));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
输出:
CONST_1 = 1
CONST_2 = 3
CONST_3 = 5