kotlin.reflect.KClass.isInstance(值:有吗?)不工作

kotlin.reflect.KClass.isInstance(值:有吗?)不工作,class,kotlin,reflection,instanceof,Class,Kotlin,Reflection,Instanceof,我在试着跟着 "simple string"::class.isInstance(kotlin.String) 但它返回错误 我正在使用 org.jetbrains.kotlin:kotlin reflect:1.3.21 另一个例子也失败了 1::class.isInstance(kotlin.Int) true::class.isInstance(Boolean) 请帮我理解它 如果API使用不正确,isInstance函数将执行相反的检查,如文档所示: 如果[value]是给定平台上此

我在试着跟着

"simple string"::class.isInstance(kotlin.String)
但它返回错误

我正在使用

org.jetbrains.kotlin:kotlin reflect:1.3.21

另一个例子也失败了

1::class.isInstance(kotlin.Int)
true::class.isInstance(Boolean)

请帮我理解它

如果API使用不正确,isInstance函数将执行相反的检查,如文档所示:

如果[value]是给定平台上此类的实例,则返回true

Int行没有引用类型,您将错过::类

一种可能的解决方案是翻转声明:

String::class.isInstance("a string")  /// true
Int::class.isInstance(42) /// true

您还可以比较KClass对象,例如432::class==Int::class,或者使用KClass函数IsubClassof和IsubPerClassof

如果API使用不正确,isInstance函数会执行相反的检查,如文档所示:

如果[value]是给定平台上此类的实例,则返回true

Int行没有引用类型,您将错过::类

一种可能的解决方案是翻转声明:

String::class.isInstance("a string")  /// true
Int::class.isInstance(42) /// true
您还可以比较KClass对象,例如432::class==Int::class,或者使用KClass函数isSubclassOf和IssupClassOf

kotlin.String、kotlin.Int和Boolean作为值,因此它们引用相应类的值。因此,第一行检查String companion对象是否是字符串,并正确地告诉您它不是字符串。

kotlin.String、kotlin.Int和Boolean用作值,因此它们引用相应类的名称。因此,第一行检查String companion对象是否是字符串,并正确地告诉您它不是字符串。

432::class==Int::class它工作,但Int::class.isInstance42不工作。谢谢432::class==Int::class它可以工作,但Int::class.isInstance42不能。谢谢我正在寻找Java的ClassisSignableFromObj函数模拟。有趣的是,kotlin.Int表示伴随对象,但kotlin.Int::class表示not的KClass,而不是companion@EugenePetrenko你是说ClassisSignablefromClass?很好,这里有一个对称的isSubclassOf。我在寻找Java的ClassisSignableFromObj函数模拟。有趣的是,kotlin.Int表示伴随对象,但kotlin.Int::class表示not的KClass,而不是companion@EugenePetrenko你是说ClassisSignablefromClass?很好,这里有一个对称的isSubclassOf。