有没有一种简单的方法来检查两个类是否实现了一个公共(public)接口(interface)? 我正在使用 IntelliJ,并从一些 Kotlin 代码调用 Java 库(Elastic Java High Level REST Client)。
SearchHit
和 GetResponse
类都具有 getId()
和 getSourceAsString()
方法。我如何知道它们是否实现了通用接口(interface),以便我可以共同使用这些对象作为参数的函数?
这是我的代码:
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
}
最佳答案
运行时间
您可以尝试使用 Kotlin 中的 is
关键字来检查对象是否是某些接口(interface)的实例:
if (obj is MyInterface) {...}
Kotlin 相当于 Java:
if (obj instanceof MyInterface) {
//...
}
开发期间
在使用Intellij Idea
开发过程中,我们可以通过在classes
声明时按 Ctrl+ B 来快速检查classes
声明。光标位于类名上。
关于java - 如何知道两个类是否实现了一个公共(public)接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55626786/