web-dev-qa-db-fra.com

En Java, à quoi servent les mots-clés `final`,` finally` et `finalize`?

En Java, à quoi servent les mots-clés final, finally et finalize?

82
Pat R Ellery

final

final peut être utilisé pour marquer une variable "non modifiable"

private final String name = "foo";  //the reference name can never change

final peut également rendre une méthode non "remplaçable"

public final String toString() {  return "NULL"; }

final peut également rendre une classe non "héritable". c'est-à-dire que la classe ne peut pas être sous-classée.

public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed

enfin

finally est utilisé dans une instruction try/catch to code d'exécution "always"

lock.lock();
try {
  //do stuff
} catch (SomeException se) {
  //handle se
} finally {
  lock.unlock(); //always executed, even if Exception or Error or se
}

Java 7 a une déclaration nouvelle tentative avec ressources que vous pouvez utiliser pour fermer automatiquement les ressources implémentant explicitement ou implicitement Java.io.Closeable ou Java.lang. AutoCloseable

finaliser

finalize est appelé lorsqu'un objet est nettoyé. Vous avez rarement besoin de le remplacer. Un exemple:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}
269
krico
  • "Final" indique que quelque chose ne peut pas être changé. Vous voulez généralement utiliser ceci sur des variables statiques qui auront la même valeur tout au long de la vie de votre programme.
  • "Finally" est utilisé en conjonction avec un bloc try/catch. Tout ce qui se trouve dans la clause "finally" sera exécuté, que le code du bloc "try" lève une exception ou non.
  • "Finalize" est appelé par la machine virtuelle avant qu'un objet ne soit sur le point d'être collecté.
18
Kevin R

Le mot-clé final est utilisé pour déclarer des constantes.

final int FILE_TYPE = 3;

Le mot-clé finally est utilisé dans une instruction try catch pour spécifier un bloc de code à exécuter, quelles que soient les exceptions levées.

try
{
  //stuff
}
catch(Exception e)
{
  //do stuff
}
finally
{
  //this is always run
}

Et enfin (haha), finalize, je ne suis pas tout à fait sûr que ce soit un mot clé, mais il existe une fonction finalize () dans la classe Object.

6
ctrlc-root

final: final est un mot-clé. La variable déclinée comme finale ne doit être initialisée qu'une seule fois et ne peut pas être modifiée. Java déclarées en tant que final ne peuvent pas être étendues. Les méthodes déclarées en tant que final ne peuvent pas être remplacées.

finally: est enfin un bloc. Le bloc finally est toujours exécuté à la fin du bloc try. Cela garantit que le bloc finally est exécuté même si une exception inattendue se produit. Mais finalement, c'est utile pour plus que la gestion des exceptions - cela permet au programmeur d'éviter que le code de nettoyage soit contourné accidentellement par un retour, une poursuite ou une interruption. Mettre le code de nettoyage dans un bloc finally est toujours une bonne pratique, même si aucune exception n'est anticipée.

finalize: finalize est une méthode. Avant qu'un objet ne soit récupéré, le système d'exécution appelle sa méthode finalize (). Vous pouvez écrire le code de version des ressources système dans la méthode finalize () avant de récupérer les déchets.

6
venom

1. Final • Final est utilisé pour appliquer des restrictions sur la classe, la méthode et la variable. • La classe finale ne peut pas être héritée, la méthode finale ne peut pas être remplacée et la valeur de la variable finale ne peut pas être modifiée. • Les variables finales sont initialisées au moment de la création, sauf en cas de variable finale vierge qui est initialisée dans Constructeur. • Final est un mot clé.

2. Finally • Enfin, il est utilisé pour la gestion des exceptions avec try and catch. • Il sera exécuté que l'exception soit gérée ou non. • Ce bloc est utilisé pour fermer les ressources telles que la connexion à la base de données, les ressources d'E/S. • est enfin un bloc.

. Finalize • Finalize est appelé par le thread de récupération de place juste avant de collecter les objets éligibles pour effectuer le traitement de nettoyage. • C’est la dernière chance pour l’objet d’effectuer un nettoyage, mais comme il n’est pas garanti que finalize () soit appelé, sa mauvaise pratique est de conserver les ressources jusqu’à finaliser l’appel. • Finaliser est une méthode.

2
Mulalo Madida