【发布时间】:2014-07-23 21:28:34
【问题描述】:
默认方法是我们 Java 工具箱中一个不错的新工具。但是,我尝试编写一个接口来定义default 版本的toString 方法。 Java 告诉我这是被禁止的,因为在java.lang.Object 中声明的方法可能不是defaulted。为什么会这样?
我知道有“基类总是获胜”的规则,所以默认情况下(双关语;),Object 方法的任何default 实现都会被Object 中的方法覆盖。但是,我认为规范中 Object 中的方法不应该有例外。特别是对于toString,拥有一个默认实现可能非常有用。
那么,Java 设计人员决定不允许 default 方法覆盖来自 Object 的方法的原因是什么?
【问题讨论】:
-
我现在对自己感觉很好,为此投票了 100 次,因此获得了金牌。好问题!
标签: java interface java-8 default-method