Java8: Warum ist es verboten, eine Standardmethode für eine Methode aus java.lang.Object zu definieren
Standardmethoden sind ein schönes neues Tool in unserer Java-Toolbox. Ich habe jedoch versucht, eine Schnittstelle zu schreiben, die a definiertdefault
Version dertoString
Methode. Java sagt mir, dass dies verboten ist, da Methoden in deklariert sindjava.lang.Object
möglicherweise nichtdefault
ed. Warum ist das so?
Ich weiß, dass es die Regel "Basisklasse gewinnt immer" gibt, also standardmäßig (Wortspiel;) jededefault
Implementierung einesObject
Methode würde durch die Methode von überschriebenObject
sowieso. Ich sehe jedoch keinen Grund, warum es keine Ausnahme für Methoden von geben sollteObject
in der spec. Speziell fürtoString
Es kann sehr nützlich sein, eine Standardimplementierung zu haben.
Was ist der Grund, warum Java-Designer beschlossen haben, dies nicht zuzulassen?default
Methoden überschreiben Methoden vonObject
?