Sobes.tech
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.