Enum: получить список ключей - PullRequest
3 голосов
/ 26 апреля 2010

Я не Java-разработчик. Но в настоящее время я смотрю на разработку приложений для Android, поэтому я немного ностальгирую, снова делаю java, не трогая его три года.

Я с нетерпением жду использования библиотеки "google-api-translate-java".
В котором есть класс Language . Это перечисление, позволяющее указать название языка и получить его значение для Google Translate.

Я могу легко получить все значения с помощью:

for (Language l : values()) {
    // Here I loop on one value
}

Но я бы хотел получить список всех имен ключей (FRENCH, ENGLISH, ...).
Есть ли что-то вроде метода "keys ()", который позволил бы мне перебрать все ключи enum?

Ответы [ 3 ]

10 голосов
/ 26 апреля 2010

Альтернативой Language.values() является использование EnumSet:

for (Language l : EnumSet.allOf(Language.class))
{
}

Это полезно, если вы хотите использовать его в API, который использует интерфейсы коллекций вместо массива. (Это также позволяет избежать создания массива для начала ... но вместо этого ему нужно выполнять другую работу. Конечно, это все о компромиссах.)

В данном конкретном случае, values(), вероятно, более уместно, но стоит хотя бы знать о EnumSet.

РЕДАКТИРОВАТЬ: Судя по другому комментарию, вас беспокоит переопределение toString() - вместо этого позвоните name():

for (Language l : Language.values())
{
    String name = l.name();
    // Do stuff here
}
4 голосов
/ 26 апреля 2010
1 голос
/ 26 апреля 2010

Да - если перечисление X, используйте X.values ​​(). См. этот урок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...