为什么 Channel 接口要重新定义 close() 方法?

Why Channel interface redefine close() method?

Closeable接口中已经定义了close()方法,为什么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;

}

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

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

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