Von Effective Java 2. Auflage, Artikel 17:Wenn Konstrukteure die Vererbung planen, dürfen sie eine überschreibbare Methode aufrufen?
Für jede öffentliche oder Methode oder Konstruktor geschützt, muss die Dokumentation
welche overridable Methoden die Methode oder Konstruktor zeigen
Später im selben ruft Item it says:
Konstruktoren dürfen keine überschreibbaren Methoden direkt oder indirekt aufrufen.
Sind diese beiden Aussagen nicht widersprüchlich, oder fehle ich etwas?
Sie können es in einem Sinne lesen, der nicht widersprüchlich ist: es kann vakuumlos wahr sein Die Dokumentation eines Konstruktors zeigt alle aufgerufenen überschreibbaren Methoden an, wenn null überschreibbare Methoden aufgerufen werden. Aber ich vermute, das ist nicht der Geist, in dem es geschrieben wurde, noch der, den du meinst :) –
Nicht wirklich, du solltest dokumentieren, welche Overridable-Mitglieder du aufrufst, nur damit jemand sie überschreiben kann, und danach kann er nicht sagen > "hey, aber du hast mich nie darüber informiert, dass dies oder das nicht hätte > irgendwelche Nebenwirkungen" Abgesehen davon wird es immer Leute geben, die Methoden in ihren (überschriebenen) Klassen ändern, die Ihren Code brechen könnten, so dass es ist am besten, dies nie zu tun. – Stultuske