Beliebiges Enum als Methodenargument in Java

Java stellt Enums als Klassen dar. So ist es möglich, Methoden zu schreiben, die nicht nur ein bestimmtes Enum als Argument verwenden, sondern ein beliebiges.

Enums erweitern die Klasse java.lang.Enum<E extends Enum<E>>. Eine Methode

public void foo(java.lang.Enum someEnum) { ... }

kann somit nur mit einer Enum-Konstanten aufgerufen werden.

foo(SomeEnum.SOME_ENUM_CONSTANT);

Der genaue Enum-Typ ist dabei unerheblich.

Dies dürfte nur in den wenigsten Fällen irgendeinen Zweck erfüllen. Interessanter ist dann schon die Tatsache, daß man einen Enum-Typ übergeben kann:

public static > void bar(final Class someEnumType) { ... }

bar(SomeEnum.class);

Auf diese Weise können bspw. alle Konstanten ausgelesen werden.

public static &> void bar(final Class someEnumType) {
    for(E constant : someEnumType.getEnumConstants())
        System.out.println(constant);
}
oppol.abryok+blog-My4xMjkuNDUuOTI@gmail.com