Какова точка статического метода valueOf()? (перечисления)

70
6

Я узнаю о перечислениях, и я не понимаю цели, которой служит этот метод.

Пример:

enum Fruits{
apple, pear, orange
}

class Demo{
f = Fruits.valueOf("apple"); //returns apple... but I had to type it!
// so why wouldn't I save myself some time
// and just write: f = Fruits.apple; !?

}

спросил(а) 2016-06-14T13:27:00+03:00 4 года, 4 месяца назад
1
Решение
70

Метод valueOf должен предоставить вам способ получения значений Fruits представленных вашей программе в виде String - например, когда значения берутся из файла конфигурации или ввода пользователя:

String fruitName = input.next();
Fruits fruit = Fruits.valueOf(fruitName);

Выше название фрукта предоставляется конечным пользователем. Ваша программа может читать и обрабатывать ее как enum, не зная, какие фрукты будут поставляться во время выполнения.

ответил(а) 2016-06-14T13:35:00+03:00 4 года, 4 месяца назад
58

Я согласен с @dasblinkenlight, вы можете использовать метод Enum.valueOf() Если у вас есть некоторый вход во время выполнения.

String input="apple" //It may be passed from some where
Fruits fruit = Fruits.valueOf(input); // Here you will get the object of type Fruits

Еще одна вещь, которую я хочу добавить здесь: если перечисление не существует для этого ввода, то метод valueOf() будет вызывать исключение Runtime вместо того, чтобы возвращать null. Исключением будет:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant

ответил(а) 2016-06-14T13:45:00+03:00 4 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема