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