为什么这个类实现了两个接口,其中一个接口已经从普通父接口扩展?

时间:2017-04-27 03:52:07

标签: java openjdk

类AbstractInterruptibleChannel实现InterruptibleChannel及其超级接口Channel。

这背后有什么理由吗?

或者这应该是什么优势?

Diagram

2 个答案:

答案 0 :(得分:0)

你是对的,这实际上是多余的。

这样做的唯一原因是:您可能担心子接口在未来发生变化 - 不再扩展其他接口。

通过明确地放下两个接口,你可以防止这种变化(是的,该类说"实现"对于两个接口)。

但是,这仍然是一个相当罕见的,令人惊讶的结构,我将不会使用它。

答案 1 :(得分:0)

行为是一样的。
我认为,意图是开发人员不需要输入absract类定义来了解接口是间接实现的信息。
AbstractInterruptibleChannel是两件事:chanel(Channel)和可中断的(InterruptibleChannel)。声明两个接口明确强调它 对于自定义类,它看起来似乎是多余的和无助的,但对于源代码被浏览并读取数百万次的jdk类,它可能不是。