Ich bin überrascht zu sehen, dass EnumSet#allOf()
das nicht erwähnt wird:
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
Erstellt einen Aufzählungssatz, der alle Elemente des angegebenen Elementtyps enthält.
Beachten Sie Folgendes enum
:
enum MyEnum {
TEST1, TEST2
}
Rufen Sie die Methode einfach so auf:
Set<MyEnum> allElementsInMyEnum = EnumSet.allOf(MyEnum.class);
Dies gibt natürlich a zurück Set
, nicht a List
, aber es sollte in vielen (den meisten?) Anwendungsfällen ausreichen.
Oder wenn Sie ein Unbekanntes haben enum
:
Class<? extends Enum> enumClass = MyEnum.class;
Set<? extends Enum> allElementsInMyEnum = EnumSet.allOf(enumClass);
Der Vorteil dieser Methode im Vergleich zu Class#getEnumConstants()
ist, dass sie so typisiert ist, dass nichts anderes als eine enum
an sie übergeben werden kann. Der folgende Code ist beispielsweise gültig und gibt Folgendes zurück null
:
String.class.getEnumConstants();
Dies wird zwar nicht kompiliert:
EnumSet.allOf(String.class);