Recentemente, ho avuto l'occasione di utilizzare il costrutto Java <instance>.new per creare un'istanza di una classe interna.Il punto di Java è un nuovo odore di codice?
Mentre sento che ci fosse una giustificazione ragionevole farlo, la sua sintassi piuttosto oscuro sembra che potrebbe rendere le cose un po 'più difficile da comprendere per i programmatori di manutenzione.
Ma mi chiedo se la necessità di <esempio> .new è un indicatore che sarebbe meglio fare un po 'di refactoring per rendere la classe interna di una classe di livello nella confezione del suo genitore, dargli un costruttore che prendere un riferimento al suo tipo genitore sarebbe più ideale e aggiungere metodi di accesso o modificatori di accesso a livello di pacchetto ai campi che accede dal tipo genitore.
Esistono casi d'uso per l'istanza < >. Nuovo che non è stato possibile eseguire eseguendo il refactoring della classe interna in una classe esterna?
Potrebbe essere solo il mio caso d'uso, ma sembra che la necessità di istanziare una classe interna al di fuori del suo genitore indica che il livello di incapsulamento potrebbe non essere appropriato. Cosa dovrei cercare per determinare se l'incapsulamento è appropriato? – Kylos
Valuta se la classe interna è "interna" alla classe esterna. Considerare se la classe interna possa essere utilizzata in modo significativo indipendentemente da un'istanza di classe esterna. –
Fondamentalmente, mi chiedo se la necessità di utilizzare una classe interna al di fuori della sua classe contenente indica che una classe interna potrebbe non essere l'incapsulamento appropriato. – Kylos