【问题标题】:What's the purpose of InterruptibleChannel interface extends Channel interface in Java?InterruptibleChannel 接口在 Java 中扩展 Channel 接口的目的是什么?
【发布时间】:2015-04-06 15:23:58
【问题描述】:

我知道这听起来像是一个愚蠢的问题。但是由于 InterruptibleChannel 只声明了一种方法:

void close()
           throws IOException

这与 Channel 接口中的名称/签名相同。这种接口继承的目的是什么?

这是用于 Java 运行时的反射目的吗?

【问题讨论】:

    标签: java inheritance interface extends


    【解决方案1】:

    它是相同的签名,但它表示也可以抛出AsynchronousCloseException(这也是一个IOException)。

    实际上,这实际上是一个“标记”接口,虽然在功能上等同于使用Channel,但使用InterruptibleChannel 可能会使阅读代码的任何人更清楚地了解它的用法。

    【讨论】:

      【解决方案2】:

      目的是将可中断通道提供的合同直接编码到类型系统中。合同的保证被认为足够重要,足以证明这一点。

      InterruptibleChannel的文档中特别注意这句话:

      通道支持异步关闭和中断当且仅当它实现此接口。如有必要,可以通过 instanceof 运算符在运行时进行测试。

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 1970-01-01
        • 2012-10-23
        • 2023-03-22
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多