TutorJava Nivel Básico

Antes de que un objeto sea recolectado por el recolector de basura, el sistema llama al m�todo finalize(). La intenci�n de este m�todo es liberar los recursos del sistema, como ficheros o conexiones abiertas antes de empezar la recolecci�n.

Una clase puede proporcionar esta finalizaci�n simplemente definiendo e implementando un m�todo llamado finalize(). El m�todo finalize() debe declararse de la siguiente forma.

protected void finalize () throws throwable

Esta clase abre un fichero cuando se construye.

class AbrirUnFichero {
    FileInputStream unFichero = null;
    AbrirUnFichero (String nombreFichero) {
        try {
            unFichero = new FileInputStream(nombreFichero);
        } catch (java.io.FileNotFoundException e) {
        System.err.println("No se pudo abrir el fichero " + nombreFichero);
        }
    }
}

Para un buen comportamiento, la clase AbrirUnFichero deber�a cerrar el fichero cuando haya finalizado. Aqu� tienes el m�todo finalize() para la clase AbrirUnFichero.

protected void finalize () throws throwable {
    if (unFichero != null) {
        unFichero.close();
        unFichero = null;
    }
}

El m�todo finalize() est� declarado en la clase java.lang.Object. As� cuando escribas un m�todo finalize() para tus clases est�s sobreescribiendo el de su superclase. En Sobreescribir M�todos encontrar�s m�s informaci�n sobre la sobreescritura de m�todos.

Si la superclase tiene un m�todo finalize(), probablemente este m�todo deber� llamar al m�todo finalize() de su superclase despu�s de haber terminado sus tareas de limpieza. Esto limpiar� cualquier recurso obtenido sin saberlo a trav�s de los m�todos heredados desde la superclase.

protected void finalize() throws Throwable {
    . . .
    // aqu� va el c�digo de limpieza de esta clase
    . . .
    super.finalize();
}

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP