Я могу придумать два лучших решения, чем использование отражения.
Любая приличная среда 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<Foo> 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