Kotlin get type as string
我找不到如何用Kotlin语言将变量(或常量)的类型作为String,如typeof(variable)。如何做到这一点?
- 您应该澄清您想对"变量类型"做什么,如果例如检查"a是b的实例",那么您不需要字符串。如果用于显示或其他用途,则可能是字符串。
您可以使用最适合您需要的方法之一:
1 2 3 4 5
| val obj : Double = 5.0
System. out. println(obj. javaClass. name) // double
System. out. println(obj. javaClass. kotlin) // class kotlin.Double
System. out. println(obj. javaClass. kotlin. qualifiedName) // kotlin.Double |
你可以在这里摆弄这个。
- 是的,我认为如其他评论所述,javaClass是答案。
- 这似乎不适用于可以为空的类型。例如,如果您有val obj = getInt();,其中getInt()返回Int?类型,那么尝试obj.javaClass.name会导致编译错误。
- 如果您的属性可以为空,那么您当然必须运行obj?.javaClass?.name,它返回null作为空值。
类型检查和强制转换:"is"和"as"
1 2 3 4 5 6 7
| if (obj is String) {
print (obj. length)
}
if (obj !is String) { // same as !(obj is String)
print ("Not a String")
} |
- 和@michael的答案一样
- 米迦勒用爪哇回答,而不是Kotlin。Rodrigo给出的这个答案是针对Kotlin的,区别在于Kotlin中不存在instanceof,而是is和!is操作符。