La clase inmutable que consideras inmutable creo que no es totalmente, porque si esta bien que haga un copiado de la lista cada vez que se llama el metodo get, cuando el objeto se crea por primera vez el valor de la lista “emails” que envias no le hace ningun copiado, simplemente lo coloca directamente en el atributo emails de la clase, eso hace que el programador a futuro pueda tomar esa lista que le envio al objeto inmutable y modificarla desde afuera, y al modificarla desde afuera, eso modifica el valor de la referencia que tiene en la clase inmutable.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?