Преобразование строки в класс Enum

Отказ от ответственности: я не собираюсь говорить, что я самый опытный 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. Не знаю, имеют ли это значение, но это вся информация, которую я могу дать.

6
задан Bob 17 November 2011 в 21:23
поделиться