Java8: Por que é proibido definir um método padrão para um método a partir de java.lang.Object

Os métodos padrão são uma boa ferramenta nova em nossa caixa de ferramentas Java. No entanto, tentei escrever uma interface que define umdefault versão dotoString método. Java me diz que isso é proibido, uma vez que os métodos declarados emjava.lang.Object talvez não sejadefaulted. Por que esse é o caso?

Eu sei que existe a regra "classe base sempre vence", portanto, por padrão (pun;), qualquerdefault implementação de umObject O método seria substituído pelo método deObject de qualquer forma. No entanto, não vejo razão para que não exista uma exceção para métodos deObject nas especificações. Especialmente paratoString pode ser muito útil ter uma implementação padrão.

Então, qual é a razão pela qual os designers Java decidiram não permitirdefault métodos substituindo métodos deObject?

questionAnswers(5)

yourAnswerToTheQuestion