Junior — Middle
Quais passos devem ser seguidos para tornar um objeto imutável?
sobes.tech IA
Resposta da IA
Para tornar um objeto em Java imutável, deve-se seguir vários passos-chave:
- Declarar a classe como
finalpara evitar herança e alterações de comportamento. - Tornar todos os campos
privateefinalpara que não possam ser alterados após a inicialização. - Não fornecer setters (métodos para modificar os campos).
- Inicializar todos os campos através do construtor.
- Se os campos forem referências a objetos modificáveis (por exemplo, arrays, coleções ou outros objetos), é necessário criar cópias deles ao atribuir e ao retornar dos getters, para prevenir alterações externas.
Exemplo:
public final class ImmutablePerson {
private final String name;
private final int age;
public ImmutablePerson(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Se houver um campo do tipo List<String>, deve-se fazer cópias no construtor e no getter:
public final class ImmutableGroup {
private final List<String> members;
public ImmutableGroup(List<String> members) {
this.members = new ArrayList<>(members);
}
public List<String> getMembers() {
return new ArrayList<>(members);
}
}