Attualmente sto leggendo Effective Java di Joshua Bloch e l'articolo 17 è "Progettare e documentare per ereditarietà o altrimenti vietarlo". L'autore suggerisce di vietare l'ereditarietà per impostazione predefinita.È possibile rimuovere la finale da una definizione di classe di interruzione della compatibilità?
È sicuro dichiarare le classi finali per impostazione predefinita e in una versione successiva rimuovere la parola chiave finale se è necessario estendere la classe? Romperà la compatibilità al contrario del codice che è stato compilato con una versione precedente?
Se è così sembra che sia una scommessa più sicura rendere definitiva tutte le classi e rimuoverla solo in una versione futura se c'è una domanda ben supportata.
In qualche modo dipende da quante API viventi e respiranti possiedi. Se apporti modifiche e rilasci tutto il tempo, non è così male aspettare una settimana per avere la possibilità di ereditare. Se, d'altra parte, Java lo avesse fatto con le loro classi JDK di base per impostazione predefinita, avrebbe portato i programmatori in lacrime a dover aspettare 5 anni per la "correzione". –
@Kirk Woll se occorrono 5 anni per passare dall'ultima alla non finale, quanto tempo ci vorrà per passare dalla non finale alla finale? – emory