Les méthodes / fonctions membres valueOf
et values
qui sont implicitement déclarées dans la classe dérivée Enum
Comment appeler de manière générique.
Java
Supposons que le type énumération suivant soit défini.
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
Supposons que le type énumération suivant soit défini.
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>`Peut être omis (inférence de type) dans ce cas
inline fun <reified E : Enum<E>> values(): Array<E> =
enumValues<E>() // `<E>`Peut être omis (inférence de type) dans ce cas
fun main() {
val red: PrimaryColor = valueOf("RED")
val values: Array<PrimaryColor> = values()
}
/c'est tout
Recommended Posts