Comment pouvons-nous maintenir l'Immuabilité d'une classe avec une référence mutable

Je connais toutes les règles de base pour rendre notre classe immuable, mais je suis un peu confus quand il y a une autre catégorie de référence. Je sais que si il y a de collecte au lieu de Address alors nous pouvons faire usage de Collections.unmodifiableList(new ArrayList<>(modifiable)); et puis nous pouvons faire de notre classe immuable. Mais en dessous de cas, je suis toujours incapable d'obtenir le concept.

public final class Employee{
    private final int id;
    private Address address;
    public Employee(int id, Address address)
    {
        this.id = id;
        this.address=address;
    }
    public int getId(){
        return id;
    }
    public Address getAddress(){
        return address;
    }
}

public class Address{
    private String street;
    public String getStreet(){
        return street;
    }
    public void setStreet(String street){
        this.street = street;
    }
}
Employee n'est pas immuable, et il n'y a pas beaucoup que vous pouvez faire pour changer cela si vous ne pouvez pas changer le Address classe pour prendre en charge au minimum de la copie, mais de préférence en Address immuable dans la première place.

OriginalL'auteur user1111880 | 2015-12-05