kotlin.reflect.KClass.isInstance(值:任何?)不起作用

问题描述 投票:0回答:2

我正在尝试以下

"simple string"::class.isInstance(kotlin.String)

但它返回假!

我正在使用

“org.jetbrains.kotlin:科特林-反映:1.3.21”

另一个例子也失败了

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

拜托,帮帮我理解吧!

class kotlin reflection instanceof
2个回答
1
投票

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

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

kotlin.Int线不是指类型,你错过了::class

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

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

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


2
投票

kotlin.Stringkotlin.IntBoolean用作值,因此它们指的是相应类的companion objects。所以第一行检查String伴侣对象是否是String并正确地告诉你它不是。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.