Sobes.tech
Junior — Middle

Quels aspects doivent être pris en compte lors de la création d'une copie d'un objet d'une classe immuable?

sobes.tech IA

Réponse de l'IA

Pour une classe immuable, la création d'une copie de l'objet ne nécessite généralement pas de clonage profond, car l'état de l'objet ne change pas après sa création.

Aspects principaux:

  • Si la classe est vraiment immuable, il suffit de retourner la référence au même objet, car il ne changera pas.
  • Si vous devez créer un nouvel objet avec un état modifié, vous créez généralement une nouvelle instance avec les paramètres nécessaires.
  • Il est important que tous les champs soient finals et eux-mêmes immuables (par exemple, String, types primitifs ou collections immuables).

Exemple:

public final class ImmutablePoint {
    private final int x;
    private final int y;

    public ImmutablePoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public ImmutablePoint copy() {
        // On peut simplement retourner this, car l'objet est immuable
        return this;
    }

    public ImmutablePoint withX(int newX) {
        return new ImmutablePoint(newX, this.y);
    }
}

Ainsi, la copie d'un objet immuable n'est pas nécessaire ou elle est créée comme un nouvel objet avec un nouvel état.