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