【问题标题】:Why Channel interface redefine close() method?为什么 Channel 接口重新定义 close() 方法?
【发布时间】:2020-07-21 08:47:36
【问题描述】:

Close()方法已经在Closeable接口中定义了,为什么Channel又重新定义了?

package java.io;
import java.io.IOException;

public interface Closeable extends AutoCloseable {
    public void close() throws IOException;
}
package java.nio.channels;

import java.io.IOException;
import java.io.Closeable;

public interface Channel extends Closeable {

    public boolean isOpen();

    public void close() throws IOException;

}

【问题讨论】:

  • 可能只是为了清晰和可读性,但您必须询问甲骨文的任何人写了这行代码。
  • 因为 Channel 来自 1.4 而Closeable 来自 1.5。

标签: java nio jdk1.4


【解决方案1】:

很遗憾,您没有复制最重要的部分 - JavaDoc。

Channel#close() 的 JavaDoc 阐明了该方法的很多特定于通道的细节,例如后续操作抛出 ClosedChannelException,以及在涉及多个线程时该方法的行为方式,尤其是阻塞行为。

另外,Channel 早于 Closeable(在 1.4 中引入,在 1.5 中引入 Closeable)并使用该接口进行了改造。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2012-06-05
    相关资源
    最近更新 更多