Die Methoden / Member-Funktionen valueOf
und values
, die implizit in der von Enum abgeleiteten Klasse deklariert sind
Wie man generisch anruft.
Java
Angenommen, der folgende Aufzählungstyp ist definiert.
public enum PrimaryColor {
RED, GREEN, BLUE
}
public static void main(String... args) {
PrimaryColor red = PrimaryColor.valueOf("RED"); // RED
PrimaryColor[] values = PrimaryColor.values(); // [RED, GREEN, BLUE]
}
public static <E extends Enum<E>> E valueOf(Class<E> enumType, String name) {
return Enum.valueOf(enumType, name);
}
public static <E extends Enum<E>> E[] values(Class<E> enumType) {
return enumType.getEnumConstants();
}
public static void main(String... args) {
PrimaryColor red = valueOf(PrimaryColor.class, "RED"); // RED
PrimaryColor[] values = values(PrimaryColor.class); // [RED, GREEN, BLUE]
}
Kotlin
Angenommen, der folgende Aufzählungstyp ist definiert.
enum class PrimaryColor {
RED, GREEN, BLUE
}
fun main() {
val red: PrimaryColor = PrimaryColor.valueOf("RED") // RED
val values: Array<PrimaryColor> = PrimaryColor.values() // [RED, GREEN, BLUE]
}
inline fun <reified E : Enum<E>> valueOf(name: String): E =
enumValueOf<E>(name) // `<E>`Kann in diesem Fall weggelassen werden (Typinferenz)
inline fun <reified E : Enum<E>> values(): Array<E> =
enumValues<E>() // `<E>`Kann in diesem Fall weggelassen werden (Typinferenz)
fun main() {
val red: PrimaryColor = valueOf("RED")
val values: Array<PrimaryColor> = values()
}
/das ist alles
Recommended Posts