Middle
¿Qué son las palabras clave final y finalize en Java, y en qué se diferencian?
sobes.tech AI
Respuesta de la IA
final - palabra clave para indicar inmutabilidad:
- Variable: La referencia o valor no puede ser cambiado después de la inicialización.
- Método: El método no puede ser sobrescrito en una clase hija.
- Clase: La clase no puede ser heredada.
finalize() - método llamado por el recolector de basura (Garbage Collector) antes de eliminar un objeto de la memoria. Se encuentra en la clase Object y está destinado a liberar recursos externos.
Diferencias:
final |
finalize() |
|---|---|
| Palabra clave | Método |
| Indica inmutabilidad | Se llama antes de eliminar el objeto |
| Relacionado con la declaración | Relacionado con el ciclo de vida del objeto |
| Se aplica a variables, métodos, clases | Solo a objetos |
Ejemplo de uso de final:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// lógica de método inmutable
}
}
final class FinalClass {
// contenido
}
Ejemplo de uso de finalize():
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// Limpieza de recursos externos, como cerrar una conexión
System.out.println("Finalizando objeto FinalizeExample...");
} finally {
super.finalize(); // Siempre llamar a super.finalize()
}
}
}
Importante: El uso de finalize() no se recomienda en Java moderno debido a su tiempo de ejecución impredecible y posibles problemas de rendimiento. Para gestionar recursos, es preferible usar bloques try-with-resources.