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 ?