¿Método finalize() en Java y cómo anularlo?

El método Java finalize() de la clase Object es un método que Garbage Collector siempre llama justo antes de eliminar/destruir el objeto que es elegible para Garbage Collection para realizar la actividad de limpieza. La actividad de limpieza significa cerrar los recursos asociados con ese objeto, como Conexión de base de datos, Conexión de red, o podemos decir desasignación de recursos. Recuerde, no es una palabra clave reservada. Una vez que el método finalize() se completa inmediatamente, Garbage Collector destruye ese objeto. 

Finalización: Justo antes de destruir cualquier objeto, el recolector de basura siempre llama al método finalize() para realizar actividades de limpieza en ese objeto. Este proceso se conoce como Finalización en Java.

Nota: El recolector de basura llama al método finalize() solo una vez en cualquier objeto.

Sintaxis: 

protected void finalize throws Throwable{}

Dado que la clase Object contiene el método de finalización, el método de finalización está disponible para cada clase de Java, ya que Object es la superclase de todas las clases de Java. Dado que está disponible para todas las clases de Java, Garbage Collector puede llamar al método finalize() en cualquier objeto de Java.

¿Por qué se usa el método finalizar()? 

El método finalize() libera recursos del sistema antes de que el recolector de elementos no utilizados se ejecute para un objeto específico. JVM permite que se invoque finalize() solo una vez por objeto.

¿Cómo anular el método finalizar()? 

El método finalize, que está presente en la clase Object, tiene una implementación vacía . En nuestra clase, hay actividades de limpieza. Entonces tenemos que anular este método para definir nuestras actividades de limpieza.

Para anular este método , tenemos que definir y llamar a finalizar explícitamente dentro de nuestro código.

Java

// Java code to show the
// overriding of finalize() method
 
import java.lang.*;
 
// Defining a class demo since every java class
// is a subclass of predefined Object class
// Therefore demo is a subclass of Object class
public class demo {
 
    protected void finalize() throws Throwable
    {
        try {
 
            System.out.println("inside demo's finalize()");
        }
        catch (Throwable e) {
 
            throw e;
        }
        finally {
 
            System.out.println("Calling finalize method"
                               + " of the Object class");
 
            // Calling finalize() of Object class
            super.finalize();
        }
    }
 
    // Driver code
    public static void main(String[] args) throws Throwable
    {
 
        // Creating demo's object
        demo d = new demo();
 
        // Calling finalize of demo
        d.finalize();
    }
}

Producción:

inside demo's finalize()
Calling finalize method of the Object class

Publicación traducida automáticamente

Artículo escrito por vanshikagoyal43 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *