获取Kotlin中变量的类型

kmpatx3s  于 2022-12-13  发布在  Kotlin
关注(0)|答案(4)|浏览(222)

如何在Kotlin中找到变量类型?在Java中有instanceof,但Kotlin并不存在:

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

nfs0ujit1#

您可以使用is运算子来检查对象是否属于特定类型:

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

您也可以使用反映取得String的型别:

println(Int::class.simpleName)    // "Int"
println(Int::class.qualifiedName) // "kotlin.Int"

请注意:
在Java平台上,使用反射功能所需的运行时组件作为单独的JAR文件(kotlin-reflect.jar)分发。这样做是为了减少不使用反射功能的应用程序所需的运行时库大小。如果确实使用反射,请确保将.jar文件添加到项目的类路径中。
来源:https://kotlinlang.org/docs/reference/reflection.html#bound-class-references-since-11

58wvjzkj

58wvjzkj2#

您可以这样使用:

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

sbtkgmzw3#

可以使用properties::class.simpleName获取类名

7cwmlq89

7cwmlq894#

只是提到的答案之间的一个小细节。

var x = "X"
println(x::class.simpleName) // prints String

当您将代码反编译为Java字节码时,此代码在底层使用了反射,如下所示:Reflection.getOrCreateKotlinClass(x.getClass()).getSimpleName()

var y = "Y"
println(y.javaClass.simpleName) // prints String

这将编译到y.getClass().getSimpleName(),速度快了大约50毫秒。

相关问题