Sobes.tech
Junior — Middle

Quais são as vantagens e desvantagens de usar classes cujos objetos não podem ser alterados após a criação?

sobes.tech IA

Resposta da IA

As classes com objetos imutáveis em Java têm as seguintes vantagens e desvantagens:

Vantagens:

  • Segurança de thread: objetos imutáveis podem ser usados com segurança em ambientes multithread sem sincronização.
  • Facilidade de compreensão: o estado do objeto não muda após a criação, o que simplifica a depuração e compreensão do código.
  • Uso como chaves: esses objetos podem ser usados em coleções onde a imutabilidade é importante (por exemplo, em HashMap), sem risco de alterar o hash.
  • Caching e otimizações: objetos imutáveis são mais fáceis de fazer cache e reutilizar.

Desvantagens:

  • Desempenho: para modificar um objeto, é necessário criar uma nova instância, o que pode acarretar custos adicionais de memória e tempo.
  • Flexibilidade: a impossibilidade de alterar o estado do objeto após sua criação pode complicar alguns cenários onde a mutabilidade é necessária.

Exemplo de uma classe imutável:

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 int getX() { return x; }
    public int getY() { return y; }
}