En Java, qué propósito las palabras clave final
, finally
y finalize
cumplen?
En Java, qué propósito las palabras clave final
, finally
y finalize
cumplen?
Respuestas:
final
se puede utilizar para marcar una variable como "inmutable"
private final String name = "foo"; //the reference name can never change
final
también puede hacer que un método no sea "anulable"
public final String toString() { return "NULL"; }
final
también puede hacer que una clase no sea "heredable". es decir, la clase no puede ser subclasificada.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
se usa en una declaración try / catch para ejecutar código "siempre"
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7 tiene una nueva declaración de prueba con recursos que puede usar para cerrar automáticamente los recursos que implementan explícita o implícitamente java.io.Closeable o java.lang.AutoCloseable
finalize
se llama cuando un objeto se recolecta como basura. Rara vez es necesario anularlo. Un ejemplo:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Object#finalize()
método quedó obsoleto en Java 9 ( JDK-8165641 ).
La palabra clave final se usa para declarar constantes.
final int FILE_TYPE = 3;
La palabra clave finalmente se usa en una declaración try catch para especificar un bloque de código a ejecutar independientemente de las excepciones lanzadas.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
Y finalmente (jaja), finalize, no estoy del todo seguro de que sea una palabra clave, pero hay una función finalize () en la clase Object.
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
final - declaración constante.
finalmente: el bloque finalmente siempre se ejecuta cuando el bloque try sale, excepto la llamada System.exit (0). Esto asegura que el bloque finalmente se ejecute incluso si ocurre una excepción inesperada. Pero finalmente es útil para algo más que el manejo de excepciones: permite al programador evitar que el código de limpieza se omita accidentalmente por un retorno, continuación o interrupción. Poner el código de limpieza en un bloque final siempre es una buena práctica, incluso cuando no se anticipan excepciones.
finalize (): el método ayuda en la recolección de basura. Un método que se invoca antes de que el recolector de basura descarte un objeto, lo que le permite limpiar su estado. No se debe usar para liberar recursos que no son de memoria como identificadores de archivos, sockets, conexiones de bases de datos, etc. porque Java solo tiene un número finito de estos recursos y no sabe cuándo se activará la recolección de basura para liberar estos recursos que no son de memoria. mediante el método finalize ().
¿Intentaste buscar en Google y necesitas una aclaración para obtener una explicación?
final: final es una palabra clave. La variable declinada como final debe inicializarse solo una vez y no se puede cambiar. Las clases de Java declaradas como finales no se pueden extender. Los métodos declarados como finales no se pueden anular.
finalmente: finalmente es un bloque. El bloque finalmente siempre se ejecuta cuando sale el bloque try. Esto asegura que el bloque finalmente se ejecute incluso si ocurre una excepción inesperada. Pero finalmente es útil para algo más que el manejo de excepciones: permite al programador evitar que el código de limpieza se omita accidentalmente por un retorno, continuación o interrupción. Poner el código de limpieza en un bloque final siempre es una buena práctica, incluso cuando no se anticipan excepciones.
finalizar: finalizar es un método. Antes de que un objeto sea recolectado como basura, el sistema en tiempo de ejecución llama a su método finalize (). Puede escribir el código de liberación de recursos del sistema en el método finalize () antes de recolectar la basura.
1. Final • Final se utiliza para aplicar restricciones de clase, método y variable. • La clase final no se puede heredar, el método final no se puede anular y el valor de la variable final no se puede cambiar. • Las variables finales se inicializan en el momento de la creación, excepto en el caso de una variable final en blanco que se inicializa en Constructor. • Final es una palabra clave.
2. Finalmente • Finalmente se usa para el manejo de excepciones junto con try and catch. • Se ejecutará tanto si se maneja la excepción como si no. • Este bloque se utiliza para cerrar los recursos como la conexión de la base de datos, los recursos de E / S. • Finalmente es un bloque.
3. Finalizar • Finalizar es llamado por el subproceso de recolección de basura justo antes de recolectar los objetos elegibles para realizar el proceso de limpieza. • Esta es la última oportunidad para que el objeto realice una limpieza, pero dado que no está garantizado si se llamará a finalize (), es una mala práctica mantener el recurso hasta finalizar la llamada. • Finalizar es un método.
El significado de final en java es: -aplicado a una variable significa que la variable respectiva una vez inicializada ya no se puede modificar
private final double numer = 12;
Si intenta modificar este valor, obtendrá un error.
-aplicado a un método significa que el método respectivo no se puede anular
public final void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
Pero el método final se puede heredar porque la palabra clave final restringe la redefinición del método.
-aplicado a una clase significa que la clase respectiva no se puede extender.
class Base
{
public void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
}
El significado de finalmente es:
class TestFinallyBlock{
public static void main(String args[]){
try{
int data=25/5;
System.out.println(data);
}
catch(NullPointerException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
en este ejemplo, incluso si se ejecuta try-catch o no, lo que está dentro de finalmente siempre se ejecutará. El significado de finalizar:
class FinalizeExample{
public void finalize(){System.out.println("finalize called");}
public static void main(String[] args){
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1=null;
f2=null;
System.gc();
}}
antes de llamar al recolector de basura.