我正在尝试以下
"simple string"::class.isInstance(kotlin.String)
但它返回假!
我正在使用
“org.jetbrains.kotlin:科特林-反映:1.3.21”
另一个例子也失败了
1::class.isInstance(kotlin.Int)
true::class.isInstance(Boolean)
拜托,帮帮我理解吧!
您使用API不正确,isInstance
函数执行相反的检查,如文档中所示:
如果[value]是给定平台上此类的实例,则返回
true
。
kotlin.Int
线不是指类型,你错过了::class
。
一个可能的解决方案是翻转声明:
String::class.isInstance("a string") /// true
Int::class.isInstance(42) /// true
您还可以比较KClass对象,例如432::class == Int::class
或使用KClass函数isSubclassOf
和isSuperclassOf
kotlin.String
,kotlin.Int
和Boolean
用作值,因此它们指的是相应类的companion objects。所以第一行检查String
伴侣对象是否是String
并正确地告诉你它不是。