Leggevo questa pagina sull'uso la parola chiave new
nel costruttore e mi chiedevo se si applica ai costruttori di copia per le raccolte.
Supponiamo che abbia una classe Book
e una raccolta per archiviare un set
di authors
.
class Book {
private String title;
private Set<Author> authorsSet;
Book (title, authors){
this.title = title
this.authorsSet = Collections.unmodifiableSet(new HashSet<Author>(authors))
}
}
È una buona idea fare una copia difensiva in modo che il codice cliente non possa cambiare gli interni di authorsSet
.
Chiama this.authorsSet = Collections.unmodifiableSet(new HashSet<Author>(authors))
una violazione della linea guida che un costruttore non deve chiamare la parola chiave new
? In tal caso, come facciamo una copia difensiva senza la parola chiave new
?