我正在尝试下面的方法
"simple string"::class.isInstance(kotlin.String)但是它返回false!
我在用 "org.jetbrains.kotlin:kotlin-reflect:1.3.21“
另一个例子也失败了。
1::class.isInstance(kotlin.Int)
true::class.isInstance(Boolean)求你了,帮我理解一下!
发布于 2019-03-27 22:55:04
如果不正确地使用API,isInstance函数会执行相反的检查,如文档所示:
如果值是给定平台上该类的实例,则返回
true。
kotlin.Int行不引用类型,您将错过::class。
一个可能的解决方案是翻转声明:
String::class.isInstance("a string") /// true
Int::class.isInstance(42) /// true您还可以比较KClass对象,例如432::class == Int::class或使用KClass函数isSubclassOf和isSuperclassOf
发布于 2019-03-28 04:28:42
kotlin.String、kotlin.Int和Boolean用作值,因此它们引用相应类的伴生对象。因此,第一行检查String同伴对象是否是String,并正确地告诉您它不是。
https://stackoverflow.com/questions/55386660
复制相似问题