Type variabele ophalen in Kotlin

Hoe vind ik het type variabele in Kotlin?
In Java is er instanceof, maar Kotlin bestaat niet:

val properties = System.getProperties() // Which type?

Antwoord 1, autoriteit 100%

U kunt de isgebruiken operatorom te controleren of een object van een bepaald type is:

val number = 5
if(number is Int) {
   println("number is of type Int")
}

Je kunt het type ook als Stringkrijgen met reflectie:

println("${number::class.simpleName}")    // "Int"
println("${number::class.qualifiedName}") // "kotlin.Int"

Let op:

Op het Java-platform is de runtime-component die nodig is voor het gebruik van de
reflectiefuncties worden gedistribueerd als een afzonderlijk JAR-bestand
(kotlin-reflect.jar). Dit wordt gedaan om de vereiste grootte van de
runtime-bibliotheek voor toepassingen die geen reflectiefuncties gebruiken.
Als je reflectie gebruikt, zorg er dan voor dat het .jar-bestand is toegevoegd
naar het klassenpad van uw project.

Bron: https://kotlinlang.org/ docs/reference/reflection.html#bound-class-references-since-11


Antwoord 2, autoriteit 4%

Je kunt het als volgt gebruiken:

val value="value"
println(value::class.java.typeName)

Antwoord 3, autoriteit 2%

je kunt de klassenaam krijgen met properties::class.simpleName

Other episodes