Como é garantida a imutabilidade em Java?
sobes.tech IA
Resposta da IA
A imutabilidade em Java é garantida pelos seguintes métodos:
-
Declarar a classe como
final: A classe não pode ser herdada, o que impede a criação de subclasses mutáveis. -
Declarar todos os campos como
final: O valor do campo só pode ser atribuído uma vez (durante a inicialização ou no construtor) e não pode ser alterado após a criação do objeto. -
Privacidade dos campos: Os campos devem ser privados (
private) para evitar acesso direto e modificação dos valores de fora da classe. -
Ausência de setters ou métodos que alterem o estado do objeto: A classe não deve fornecer métodos públicos que possam modificar os valores dos campos após sua criação.
-
Manejo correto de campos mutáveis: Se a classe contém referências a objetos mutáveis (por exemplo,
Listou uma classe mutável própria), é necessário:- Criar cópias deles na inicialização (no construtor).
- Retornar cópias nos getters para evitar modificar os estados internos do objeto de fora.
public final class ImmutableExample { // classe final
private final String name; // campo final e privado
private final List<String> items; // campo final e privado
public ImmutableExample(String name, List<String> items) {
this.name = name;
// Criar uma cópia protegida da lista mutável
this.items = new ArrayList<>(items);
}
public String getName() {
return name;
}
public List<String> getItems() {
// Retornar uma cópia protegida da lista mutável
return Collections.unmodifiableList(new ArrayList<>(items));
}
// Ausência de setters ou métodos que alterem o estado
}
Exemplos de classes imutáveis embutidas em Java: String, classes wrapper de tipos primitivos (Integer, Long, etc.), BigInteger, BigDecimal.