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(); }