[Java] [Kotlin] Appeler valueOf et les valeurs de Enum de manière générique

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
}

Appel lorsque le type de béton est connu

public static void main(String... args) {
    PrimaryColor red = PrimaryColor.valueOf("RED"); // RED
    PrimaryColor[] values = PrimaryColor.values(); // [RED, GREEN, BLUE]
}

Appel générique

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
}

Appel lorsque le type de béton est connu

fun main() {
    val red: PrimaryColor = PrimaryColor.valueOf("RED") // RED
    val values: Array<PrimaryColor> = PrimaryColor.values() // [RED, GREEN, BLUE]
}

Appel générique

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

[Java] [Kotlin] Appeler valueOf et les valeurs de Enum de manière générique
Gestion des valeurs partitionnées et de leurs noms Enum (Java) vs DB
[Java] Appel de méthode dynamique par réflexion du type enum (enum)
Veuillez noter la division (division) de java kotlin Int et Int
Langage Java du point de vue de Kotlin et C #
Ecrire une classe en Kotlin et l'appeler en Java
Avantages et inconvénients de Java
J'ai essayé de résumer les bases de kotlin et java
[Kotlin] Obtenez le constructeur / la méthode Java de KFunction et appelez-le
Différences entre Java "débutant" et Kotlin
À propos de Biocontainers fastqc et Java
Arguments Java, valeurs de retour et surcharges
Génériques Kotlin pour les développeurs Java
À propos de la classification et du concept de Immutable / Mutable / Const / Variable de Java et Kotlin.
Conversion entre Kotlin nullable et Java facultative
Relation entre les modificateurs d'accès kotlin et java
Après 3 mois de formation Java et Spring
[Pour les débutants] Différence entre Java et Kotlin
Un ingénieur Java a comparé Swift, Kotlin et Java.
[Java / Swift] Comparaison de l'interface Java et du protocole Swift
Résumé de Java Math.random et import (calendrier)
[Java] Contenu de l'interface de collection et de l'interface de liste
Acquisition de données JSON et rotation des valeurs
Discrimination d'énum dans Java 7 et supérieur
[Java] enum (type d'énumération)
Fonctions Kotlin et lambdas à envoyer aux développeurs Java
[Ruby] Mots clés avec mots clés et valeurs par défaut des arguments
Instruction de commutation Java et pause, Kotlin lorsque l'expression ...
[Java] Résumé personnel des classes et méthodes (basique)
[Java] La partie déroutante de String et StringBuilder
J'ai comparé les caractéristiques de Java et .NET
JAVA: réalise la génération et la numérisation de divers types de codes à barres
À propos de la synchronisation des appels et des arguments de la méthode addToBackStack
[Java] Mémo de classification d'erreur de compilation et d'erreur d'exécution
[Java / Kotlin] Redimensionner en tenant compte de l'orientation de l'image
Java permet l'extraction de texte et d'images PDF
[Java] Convertir et importer des valeurs de fichier avec OpenCSV
Trouvez les valeurs maximum et minimum parmi les 5 nombres saisis en Java (correction ver)