Sobes.tech
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:

  1. Declarar a classe como final para evitar herança e alterações de comportamento.
  2. Tornar todos os campos private e final para que não possam ser alterados após a inicialização.
  3. Não fornecer setters (métodos para modificar os campos).
  4. Inicializar todos os campos através do construtor.
  5. 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);
    }
}