【发布时间】:2021-11-02 00:54:43
【问题描述】:
如何在 Kotlin 中找到变量类型?
Java中有instanceof,但没有Kotlin:
val properties = System.getProperties() // Which type?
【问题讨论】:
-
你选择的新答案添加了什么新东西?
标签: kotlin instanceof
如何在 Kotlin 中找到变量类型?
Java中有instanceof,但没有Kotlin:
val properties = System.getProperties() // Which type?
【问题讨论】:
标签: kotlin instanceof
您可以使用is operator 来检查对象是否属于特定类型:
val number = 5
if(number is Int) {
println("number is of type Int")
}
你也可以使用反射获得String的类型:
println("${number::class.simpleName}") // "Int"
println("${number::class.qualifiedName}") // "kotlin.Int"
请注意:
在 Java 平台上,使用 反射功能作为单独的 JAR 文件分发 (kotlin-reflect.jar)。这样做是为了减少所需的尺寸 不使用反射功能的应用程序的运行时库。 如果您确实使用反射,请确保添加 .jar 文件 到项目的类路径。
来源:https://kotlinlang.org/docs/reference/reflection.html#bound-class-references-since-11
【讨论】:
你可以这样使用:
val value="value"
println(value::class.java.typeName)
【讨论】:
typeName 的 java.lang.Class<T> 而不是 qualifiedName 的 KCLass<T> (更多 Kotlin-ish),正如我在我的答案 stackoverflow.com/a/45165263/1788806 中显示的那样,这是之前选择的。
你可以通过properties::class.simpleName获取类名
【讨论】: