Junior — Middle
Quais aspetos devem ser considerados ao criar uma cópia de um objeto de uma classe imutável?
sobes.tech IA
Resposta da IA
Para uma classe imutável, criar uma cópia do objeto geralmente não requer uma clonagem profunda, pois o estado do objeto não muda após a criação.
Aspectos principais:
- Se a classe for realmente imutável, pode simplesmente devolver a referência ao mesmo objeto, pois ele não mudará.
- Se precisar criar um novo objeto com um estado alterado, normalmente cria-se uma nova instância com os parâmetros necessários.
- É importante que todos os campos sejam finais e eles próprios imutáveis (por exemplo, String, tipos primitivos ou coleções imutáveis).
Exemplo:
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() {
// Pode simplesmente retornar this, pois o objeto é imutável
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Assim, a cópia de um objeto imutável ou não é necessária, ou é criada como um novo objeto com um novo estado.