Da Effective Java 2 ° edizione, punto 17:Quando si pianifica l'ereditarietà, i costruttori possono chiamare metodi sovrascrivibili?
Per ogni metodo pubblico o protetto o il costruttore, la documentazione devono indicare quali metodi override del metodo o il costruttore richiama
Più tardi nello stesso articolo:
I costruttori non devono invocare metodi sovrascrivibili, direttamente o indirettamente.
Queste due affermazioni non sono contraddittorie o mi manca qualcosa?
È possibile leggerlo in un senso che non è contraddittorio: può essere vacuamente vero che la documentazione di un costruttore indica tutti i metodi sovrascrivibili invocati, se non sono stati richiamati metodi sovrascrivibili. Ma sospetto che non sia lo spirito in cui è stato scritto, né quello che stai dicendo :) –
Non proprio, dovresti documentare quali membri inviabili invochi, solo così qualcuno può ignorarli, e in seguito non può dire > "hey, ma non mi hai mai informato di ignorare questo o quello non avrebbe > effetti collaterali" A parte questo, ci saranno sempre persone che cambiano i metodi nelle loro classi (overriden), che potrebbero infrangere il tuo codice, quindi è meglio non farlo mai. – Stultuske