Это не могло бы иметь главного варианта использования в проектах, но я просто пробовал вид POC проекта, где в я получаю код клавиши и использование его значения, я хочу распечатать ключевое имя на экране. Я хочу вновь пережить меня от записи случаев переключателя, так размышление о движении отражением.
Существует ли способ получить постоянное целое число имени интерфейса с помощью его значения?
KeyPressed(int i) {
string pressedKeyName = getPressedKey(i);
System.out.println(pressedKeyName);
}
Я могу придумать два лучших решения этой проблемы, чем использование отражения.
Любая приличная среда 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