In Java können wir die Klasse einer Variablen durch getClass()
like auflösen something.getClass()
. In Kotlin weiß ich, something.javaClass
was schön ist, aber ich möchte das KClass
auf ähnliche Weise bekommen können. Ich habe die Something::class
Syntax gesehen, aber das ist nicht das, was ich brauche. Ich muss die KClass einer Variablen erhalten. Gibt es solche Funktionen?
89
javap
) zu betrachtenKClass::class
das aktuelle Klassenobjekt abrufen.something::class
zurückkehrt,KClass<out Something>
währendsomething.javaClass.kotlin
zurückkehrtKClass<Something>
EDIT: Siehe Kommentare unten und Antwort von Alexander oben. Dieser Rat war ursprünglich für Kotlin 1.0 und scheint nun veraltet zu sein.
Da die Sprache noch keinen direkten Weg unterstützt, dies zu erreichen, sollten Sie zunächst eine Erweiterungsmethode definieren .
Oder wenn Sie eine Immobilie bevorzugen:
quelle
java
Bit überspringen und geradeaus fahren Kotlin:fun<T: Any> T.getClass(): KClass<out T> = this::class
someClass::class
Hier ist meine Lösung
Mit javaClass.simpleName können Sie Ihren Klassennamen erhalten. Das obige Beispiel ist auch für Android-Entwickler sehr nützlich, um über der Klasse eine Instanzvariable für Protokollierungszwecke zu deklarieren.
quelle
Hier sind verschiedene Implementierungen, um Klassennamen zu erhalten. Sie können es gemäß Ihren Anforderungen verwenden.
Hier können wir den Klassennamen in Kotlin erhalten
Hier können wir den Klassennamen in Kotlin erhalten
Hier sind die Ausgaben für die folgenden Operationen.
quelle