DEV Community

O método finalize( )

O método finalize( )

  • O método finalize() pode ser definido para ser chamado antes da destruição de um objeto pelo coletor de lixo.

  • finalize() assegura que um objeto seja totalmente eliminado, como fechar um arquivo aberto.

  • Para adicionar um finalizador, defina o método finalize() na classe.

  • O Java Runtime chama finalize() antes de reciclar um objeto da classe.

  • Forma geral do método:
    protected void finalize( )
    {
    // parte onde entra o código de finalização
    }

  • A palavra-chave protected limita o acesso a finalize().

  • finalize() é chamado antes da coleta de lixo, não quando um objeto sai de escopo.

  • Não é garantido quando, ou se, finalize() será executado.

  • Se o programa terminar antes da coleta de lixo, finalize() não será executado.

  • finalize() deve ser usado como procedimento de reserva para tratamento apropriado de recursos ou aplicações especiais.

  • finalize() é um método especializado e raramente necessário na maioria dos programas.

Top comments (1)

Collapse
 
wldomiciano profile image
Wellington Domiciano

É importante notar que o método finalize() foi marcado como deprecated no Java 9, então ele não deveria ser usado nem como último recurso.

A documentação do Java 22, que é a última versão até o momento, diz o seguinte:

Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release. The use of finalization can lead to problems with security, performance, and reliability. See JEP 421 for discussion and alternatives.
Subclasses that override finalize to perform cleanup should use alternative cleanup mechanisms and remove the finalize method. Use Cleaner and PhantomReference as safer ways to release resources when an object becomes unreachable. Alternatively, add a close method to explicitly release resources, and implement AutoCloseable to enable use of the try-with-resources statement.

This method will remain in place until finalizers have been removed from most existing code.

Fonte: Object.html#finalize()