在 Kotlin 中获取变量的类型

问题描述 投票:0回答:4

如何在 Kotlin 中找到变量类型? Java 中有

instanceof
,但 Kotlin 中不存在:

val properties = System.getProperties() // Which type?
kotlin instanceof
4个回答
114
投票

您可以使用

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 文件 到您的项目的类路径。 (来源)


29
投票

你可以这样使用:

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

4
投票

您可以通过

properties::class.simpleName

获取班级名称

2
投票

只是上述答案之间的一个小细节。

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 毫秒。

© www.soinside.com 2019 - 2024. All rights reserved.