[Java] [Kotlin] Rufen Sie valueOf und Werte von Enum generisch auf

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
}

Rufen Sie an, wenn der Betontyp bekannt ist

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

Generischer Anruf

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
}

Rufen Sie an, wenn der Betontyp bekannt ist

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

Generischer Anruf

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

[Java] [Kotlin] Rufen Sie valueOf und Werte von Enum generisch auf
Verwaltung partitionierter Werte und ihrer Namen Enum (Java) vs DB
[Java] Dynamischer Methodenaufruf durch Reflektion des Aufzählungstyps (Aufzählung)
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Java-Sprache aus der Sicht von Kotlin und C #
Schreiben Sie eine Klasse in Kotlin und nennen Sie sie in Java
Vor- und Nachteile von Java
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
[Kotlin] Holen Sie sich Java Constructor / Method von KFunction und rufen Sie es auf
Unterschiede zwischen "Anfänger" Java und Kotlin
Über Biocontainer fastqc und Java
Java-Argumente, Rückgabewerte und Überladungen
Kotlin-Generika für Java-Entwickler
Über die Klassifizierung und das Konzept von Immutable / Mutable / Const / Variable von Java und Kotlin.
Konvertierung zwischen Kotlin nullable und Java Optional
Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren
Nach 3 Monaten Java- und Frühlingstraining
[Für Anfänger] Unterschied zwischen Java und Kotlin
Ein Java-Ingenieur verglich Swift, Kotlin und Java.
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
Zusammenfassung von Java Math.random und Import (Kalender)
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
Erfassung von JSON-Daten und Drehung von Werten
Diskriminierung von Enum in Java 7 und höher
[Java] enum (Aufzählungstyp)
Kotlin-Funktionen und Lambdas zum Senden an Java-Entwickler
[Ruby] Schlüsselwörter mit Schlüsselwörtern und Standardwerten von Argumenten
Java switch Anweisung und break, Kotlin beim Ausdruck ...
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
[Java] Der verwirrende Teil von String und StringBuilder
Ich habe die Eigenschaften von Java und .NET verglichen
Informationen zum Aufruf-Timing und zu den Argumenten der addToBackStack-Methode
[Java] Klassifizierungsnotiz für Kompilierungsfehler und Laufzeitfehler
[Java / Kotlin] Ändern Sie die Größe unter Berücksichtigung der Ausrichtung des Bildes
Java ermöglicht die Extraktion von PDF-Text und Bildern
[Java] Konvertieren und Importieren von Dateiwerten mit OpenCSV
Finden Sie die Maximal- und Minimalwerte aus den 5 in Java eingegebenen Zahlen (Korrektur ver)