kotlin.reflect.KClass.isInstance(值:任何?)不工作
kotlin.reflect.KClass.isInstance(value: Any?) not working
我正在尝试关注
"simple string"::class.isInstance(kotlin.String)
但它 return false!
I'm using
"org.jetbrains.kotlin:kotlin-reflect:1.3.21"
另一个例子也失败了
1::class.isInstance(kotlin.Int)
true::class.isInstance(Boolean)
请帮我理解一下!
您错误地使用了 API,isInstance
函数执行相反的检查,如文档中所示:
Returns true
if [value] is an instance of this class on a given platform.
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
并正确地告诉你它不是。
我正在尝试关注
"simple string"::class.isInstance(kotlin.String)
但它 return false!
I'm using
"org.jetbrains.kotlin:kotlin-reflect:1.3.21"
另一个例子也失败了
1::class.isInstance(kotlin.Int)
true::class.isInstance(Boolean)
请帮我理解一下!
您错误地使用了 API,isInstance
函数执行相反的检查,如文档中所示:
Returns
true
if [value] is an instance of this class on a given platform.
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
并正确地告诉你它不是。