Спочатку вам слід задати собі таке запитання: чи вам справді потрібен int?
Призначення перелічень - це колекція елементів (констант), які мають значення в коді, не покладаючись на зовнішнє значення (наприклад, int). Перерахування на Java можуть бути використані як аргумент для статусів перемикачів, і їх можна безпечно порівнювати, використовуючи оператор рівності "==" (серед інших).
Пропозиція 1 (не потрібно):
Часто за цим не потрібно ціле число, тоді просто використовуйте це:
private enum DownloadType{
AUDIO, VIDEO, AUDIO_AND_VIDEO
}
Використання:
DownloadType downloadType = MyObj.getDownloadType();
if (downloadType == DownloadType.AUDIO) {
}
switch (downloadType) {
case AUDIO:
break;
case VIDEO:
break;
case AUDIO_AND_VIDEO:
break;
}
Пропозиція 2 (потрібна int):
Тим не менше, іноді може бути корисно перетворити перерахування на int (наприклад, якщо зовнішній API очікує значень int). У цьому випадку я б порадив позначити методи як методи перетворення за допомогою toXxx()-Style. Для заміни друку toString().
private enum DownloadType {
AUDIO(2), VIDEO(5), AUDIO_AND_VIDEO(11);
private final int code;
private DownloadType(int code) {
this.code = code;
}
public int toInt() {
return code;
}
public String toString() {
return String.valueOf(code);
}
}
System.out.println(DownloadType.AUDIO.toInt());
System.out.println(DownloadType.AUDIO);
System.out.println(DownloadType.AUDIO.ordinal());
System.out.println(DownloadType.AUDIO.name());
System.out.println(DownloadType.VIDEO.toInt());
System.out.println(DownloadType.VIDEO.ordinal());
System.out.println(DownloadType.AUDIO_AND_VIDEO.toInt());
Резюме
- Не використовуйте ціле число разом із переліченням, якщо вам не потрібно.
- Не покладайтесь на використання
ordinal()для отримання цілого числа переліку, оскільки це значення може змінитися, якщо ви зміните порядок (наприклад, вставивши значення). Якщо ви розглядаєте можливість використання, ordinal()можливо, краще скористатися пропозицією 1.
- Зазвичай не використовуйте int-константи замість перелічень (як у прийнятій відповіді), оскільки ви втратите тип-безпеки.