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