Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin-无法使用'is'检查接口使用情况`_Kotlin - Fatal编程技术网

Kotlin-无法使用'is'检查接口使用情况`

Kotlin-无法使用'is'检查接口使用情况`,kotlin,Kotlin,我在Kotlin工作,得到了这样的课程: val payloadClass = try { Class.forName("com.something.SomeClass") } catch (e: ClassNotFoundException) { null } 它成功地找到了类,但是当我检查它是否实现了某个接口时,它不断返回false: 要检查我使用的关键字是: 因此,payloadClass是一个AGreatInterface 有没有什么原因让这不起作用。我在其他地方使用了

我在Kotlin工作,得到了这样的课程:

val payloadClass =  try {
    Class.forName("com.something.SomeClass")
} catch (e: ClassNotFoundException) {
   null
}
它成功地找到了类,但是当我检查它是否实现了某个接口时,它不断返回
false

要检查我使用的关键字

因此,
payloadClass是一个AGreatInterface

有没有什么原因让这不起作用。我在其他地方使用了
is
,它可以正常工作,不知道这是否与
Class.forName
有关

我使用了
payloadClass.interfaces.contains(AGreatInterface::class.java)
,这很有效。但是为什么
不起作用呢

任何想法都值得赞赏


谢谢。

原因是
payloadClass
不是
AGreatInterface
,而是
java.lang.Class
实例


如果要创建由
payloadClass
表示的类对象的实例,比如说
payloadInstance
,那么
payloadInstance是AGreatInterface
测试将成功。

原因是
payloadClass
不是
AGreatInterface
,而是一个
java.lang.Class
实例


如果要创建由
payloadClass
表示的类对象的实例,比如说
payloadInstance
,那么
payloadInstance是AGreatInterface
测试将成功。

使用
(AGreatInterface::class.java)。isAssignableFrom(payloadClass)
使用
(AGreatInterface::class.java).isAssignableFrom(payloadClass)
Ok得到了它-因此
is
可以检查一个类是否使用了特定的接口,但只有在它是的实际实例的情况下才正确。它检查一个实例的类型是否实现或扩展了一个类或接口。确定了-所以
is
可以检查一个类是否使用了一个特定的接口,但只有在它是的实际实例的情况下?正确。它检查实例的类型是否实现或扩展类或接口。