Middle
O que são as palavras-chave final e finalize em Java, e qual é a sua diferença?
sobes.tech IA
Resposta da IA
final - palavra-chave para indicar imutabilidade:
- Variável: A referência ou valor não pode ser alterado após a inicialização.
- Método: O método não pode ser sobrescrito numa classe filha.
- Classe: A classe não pode ser herdada.
finalize() - método chamado pelo coletor de lixo (Garbage Collector) antes de remover um objeto da memória. Ele está na classe Object e destina-se a liberar recursos externos.
Diferenças:
final |
finalize() |
|---|---|
| Palavra-chave | Método |
| Indica imutabilidade | É chamado antes de remover o objeto |
| Relacionado com a declaração | Relacionado com o ciclo de vida do objeto |
| Aplica-se a variáveis, métodos, classes | Apenas a objetos |
Exemplo de uso de final:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// lógica de método imutável
}
}
final class FinalClass {
// conteúdo
}
Exemplo de uso de finalize():
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// Limpeza de recursos externos, como fechar uma conexão
System.out.println("Finalizando objeto FinalizeExample...");
} finally {
super.finalize(); // Sempre chamar super.finalize()
}
}
}
Importante: O uso de finalize() não é recomendado em Java moderno devido ao seu tempo de execução imprevisível e possíveis problemas de desempenho. Para gerenciar recursos, é preferível usar blocos try-with-resources.