Java8: ¿Por qué está prohibido definir un método predeterminado para un método de java.lang.Object?
Los métodos predeterminados son una buena herramienta nueva en nuestra caja de herramientas Java. Sin embargo, intenté escribir una interfaz que defina undefault
versión de latoString
método. Java me dice que esto está prohibido, ya que los métodos declarados enjava.lang.Object
puede no serdefault
ed. ¿Por qué es este el caso?
Sé que existe la regla de "la clase base siempre gana", así que por defecto (juego de palabras;), cualquierdefault
implementación de unObject
el método sería sobrescrito por el método deObject
de todas formas. Sin embargo, no veo ninguna razón por la que no debería haber una excepción para los métodos deObject
en la especificación Especialmente paratoString
Puede ser muy útil tener una implementación predeterminada.
Entonces, ¿cuál es la razón por la cual los diseñadores de Java decidieron no permitirdefault
métodos que anulan los métodos deObject
?