
Gerenciamento de Memória em Java

em 21 de Janeiro de 2025
No Java, uma classe imutável é aquela cujo estado não pode ser alterado após sua criação. Isso significa que todos os campos internos de um objeto de uma classe imutável são finais e não podem ser modificados diretamente após a instanciação. A imutabilidade oferece benefícios como segurança em ambientes concorrentes, simplificação do código e previsibilidade no comportamento dos objetos.
Classes imutáveis são amplamente utilizadas em bibliotecas padrão do Java, como a classe String
, e são fundamentais para criar aplicativos robustos e escaláveis.
Princípios de uma Classe Imutável
Para criar uma classe imutável, siga os princípios abaixo:
final
: Isso impede que outras classes a estendam e potencialmente violem a imutabilidade.setter
ou outros que alterem os valores dos campos.Exemplo de Classe Imutável
Vamos criar uma classe imutável chamada Pessoa
:
public final class Pessoa {
private final String nome;
private final int idade;
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public String getNome() {
return nome;
}
public int getIdade() {
return idade;
}
}
final
, evitando que seja estendida.nome
e idade
são privados e finais, assegurando que seus valores não mudem após a inicialização.setter
.getNome
e getIdade
fornecem acesso somente leitura aos campos.Trabalhando com Campos Mutáveis
Se a classe tiver campos mutáveis, como coleções ou arrays, é necessário criar cópias defensivas para preservar a imutabilidade.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public final class Turma {
private final List<String> alunos;
public Turma(List<String> alunos) {
this.alunos = new ArrayList<>(alunos); // Cópia defensiva
}
public List<String> getAlunos() {
return Collections.unmodifiableList(alunos); // Lista imutável
}
}
Benefícios de Classes Imutáveis
HashMap
e HashSet
, pois seus valores não mudam após a criação.Desvantagens e Considerações
Classes imutáveis são um elemento essencial na construção de aplicativos Java confiáveis e eficientes. Ao seguir os princípios de imutabilidade, você cria objetos mais previsíveis, fáceis de usar e seguros, especialmente em ambientes de programação concorrente. Embora possam ter desvantagens em termos de memória, os benefícios de clareza, simplicidade e segurança muitas vezes superam os custos. Experimente implementar classes imutáveis em seus projetos e aproveite seus benefícios para melhorar a qualidade do seu código.