如何在Kotlin中找到变量类型?
在Java中有instanceof
,但Kotlin不存在:
val properties = System.getProperties() // Which type?
答案 0 :(得分:30)
你可以使用反射来做到这一点:
val widget = ...
println("${widget::class.qualifiedName}") // with package name or...
println("${widget::class.simpleName}") // ... only class name
请注意:
在Java平台上,使用所需的运行时组件 反射功能作为单独的JAR文件分发 (科特林-reflect.jar)。这样做是为了减少所需的尺寸 不使用反射功能的应用程序的运行时库。 如果您使用反射,请确保添加.jar文件 到项目的类路径。
来源:https://kotlinlang.org/docs/reference/reflection.html#bound-class-references-since-11
要测试特定类型,您可以使用is
运算符。
if(widget is Widget) {
// ...
}
答案 1 :(得分:1)
您可以通过 properties::class.simpleName
获取类名