是否有一种简单的方法来检查两个类是否实现了公共接口? 我正在使用IntelliJ,并从一些Kotlin代码中调用Java库(Elastic Java High Level REST Client)。
SearchHit
和GetResponse
类都具有getId()
和getSourceAsString()
方法。我怎么知道它们是否实现了公共接口,以便我可以将以这些对象为参数的函数相互关联?
这是我的代码:
fun JsonAdapter<Descriptor>.fromHit(hit: SearchHit): Descriptor {
val descriptor = this.fromJson(hit.sourceAsString)
if (descriptor == null) {
throw BadFormatException("Json descriptorDeserializer returned a null value")
}
descriptor.descriptorId = hit.id
return descriptor
}
fun JsonAdapter<Descriptor>.fromResponse(response: GetResponse): Descriptor {
val descriptor = this.fromJson(response.sourceAsString)
if (descriptor == null) {
throw BadFormatException("Json descriptorDeserializer returned a null value")
}
descriptor.descriptorId = response.id
return descriptor
}
答案 0 :(得分:1)
您可以尝试在科特林中使用is
关键字来检查对象是否是某些接口的实例:
if (obj is MyInterface) {...}
Kotlin与 Java 类似:
if (obj instanceof MyInterface) {
//...
}
在使用Intellij Idea
进行开发的过程中,当光标位于类名上时,我们可以通过按 Ctrl + B 快速检查classes
声明。
答案 1 :(得分:1)
如果您不知道您的类实现了哪个接口,则可以使用以下代码获取这些接口的列表。您将获得一个可以比较的类列表,以查看您的对象是否共享一个公共接口。
val obj = MyClass()
var interfaces = obj.javaClass.interfaces