Отказ от ответственности: я не собираюсь говорить, что я самый опытный Java-специалист. Могут быть более простые способы сделать то, что я привожу в моих примерах. Но это вопрос о превращении строковой записи в класс Enum, а не в переменную enum. Я попытался объяснить как можно лучше.
Это простая версия того, чем я хочу заниматься. У меня будет два разных перечисления, и я хочу выбрать одно или другое в зависимости от того, что хочет пользователь. И пример этого в коде:
public enum Letters {
A, B, C, D, E, ... , X, Y, Z
}
public enum Numbers {
ONE, TWO, THREE, ..., EIGHT, NINE, TEN
}
public static void main(String [] args) {
System.out.println("Enter in you choice, letters (Letters) or numbers(Numbers)");
String entry = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
try {
entry = reader.readLine();
}
catch(Exception e){};
...
}
Я хочу сделать так, чтобы пользователь, введя "Letters", мог взять строковую запись и превратить ее в ссылку на переменную в Letters Enum.Эллипсы - это заполнители кода. Я хочу в конечном итоге использовать это, чтобы использовать
for (answer n : variable.values()) {
System.out.println(n);
}
вместо
if (answer.equals("Numbers")) {
Numbers n;
for (n : Numbers.values()) {
System.out.println(n);
}
} else {
Letters l;
for (l : Letters.values()) {
System.out.println(l);
}
}
. Я пробовал использовать
Class<?> c = Class.forName("Letters");
, но это не работает.
В моем реальном примере у меня есть 3 файла .java, которые содержат отдельные классы, и перечисление в каждом из них. Есть классы Sandwich, Beer и Chip, а их перечисления - Sandwiches, Beers, Chips. Эти классы реализуют интерфейс VendingMachineItem. И, наконец, этот интерфейс является частью пакета vendingMachine. Не знаю, имеют ли это значение, но это вся информация, которую я могу дать.