Zuerst sollten Sie sich folgende Frage stellen: Benötigen Sie wirklich einen Int?
Der Zweck von Aufzählungen besteht darin, eine Sammlung von Elementen (Konstanten) zu haben, die im Code eine Bedeutung haben, ohne sich auf einen externen Wert (wie ein int) zu verlassen. Aufzählungen in Java können als Argument für Switch-Anweisungen verwendet und mit dem Gleichheitsoperator "==" (unter anderem) sicher verglichen werden.
Vorschlag 1 (kein int erforderlich):
Oft ist keine Ganzzahl dahinter erforderlich. Verwenden Sie dann einfach Folgendes:
private enum DownloadType{
AUDIO, VIDEO, AUDIO_AND_VIDEO
}
Verwendung:
DownloadType downloadType = MyObj.getDownloadType();
if (downloadType == DownloadType.AUDIO) {
}
switch (downloadType) {
case AUDIO:
break;
case VIDEO:
break;
case AUDIO_AND_VIDEO:
break;
}
Vorschlag 2 (int benötigt):
Trotzdem kann es manchmal nützlich sein, eine Aufzählung in eine int zu konvertieren (zum Beispiel, wenn eine externe API int-Werte erwartet). In diesem Fall würde ich empfehlen, die Methoden mit dem toXxx()
-Style als Konvertierungsmethoden zu markieren . Zum Drucken überschreiben 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());
Zusammenfassung
- Verwenden Sie keine Ganzzahl zusammen mit einer Aufzählung, wenn Sie nicht müssen.
- Verlassen Sie sich nicht darauf
ordinal()
, eine Ganzzahl einer Aufzählung zu verwenden, da sich dieser Wert ändern kann, wenn Sie die Reihenfolge ändern (z. B. durch Einfügen eines Werts). Wenn Sie die Verwendung in Betracht ziehen, ist ordinal()
es möglicherweise besser, Vorschlag 1 zu verwenden.
- Verwenden Sie normalerweise keine int-Konstanten anstelle von Aufzählungen (wie in der akzeptierten Antwort), da Sie die Typensicherheit verlieren.