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 enuman 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);