java - 如何知道两个类是否实现了一个公共(public)接口(interface)?

标签 java oop elasticsearch kotlin

有没有一种简单的方法来检查两个类是否实现了一个公共(public)接口(interface)? 我正在使用 IntelliJ,并从一些 Kotlin 代码调用 Java 库(Elastic Java High Level REST Client)。

SearchHitGetResponse 类都具有 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/

相关文章:

java - 使用代理时,接口(interface)在 ClassLoader 中不可见?

java - 为什么我的AsyncTask在主线程上运行?

javascript - 验证表

php - 从存储在另一个类中的实例访问类常量

unit-testing - 如何编写 Elastic 单元测试来测试查询构建

Java Rmi 未知主机异常

php - OOP:什么时候应该创建基类,什么时候不应该?

elasticsearch - 浏览所有文档并批量更新其中一些

docker - 我的Docker无法再使用Elasticsearch

java - java中的线程间通信