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 sejadefault
ed. 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
?