默认方法是 Java 工具箱中一个很好的新工具。但是,我尝试编写一个接口来定义 toString
方法的 default
版本。Java 告诉我这是禁止的,因为在 java.lang.Object
中声明的方法可能不是 default
ed。为什么会这样?
我知道有一个“基类总是赢”的规则,所以默认情况下(双关语;) ,Object
方法的任何 default
实现都会被来自 Object
的方法覆盖。但是,我认为没有理由不在规范中对来自 Object
的方法进行异常处理。特别是对于 toString
来说,有一个默认的实现可能非常有用。
那么,为什么 Java 设计者决定不允许 default
方法重写来自 Object
的方法呢?