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 nichtdefaulted. 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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage