84 votes

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

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

273voto

krico Points 2368

final

final peut être utilisée pour marquer une variable "immuable"

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

final pouvez également faire une méthode qui n'est pas "remplaçable"

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

final pouvez également faire une classe à ne pas "héritées". c'est à dire la classe ne peut pas être sous-classes.

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

enfin

finally est utilisé dans une instruction try/catch pour exécuter un code "toujours"

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 un nouvel essai avec la déclaration de ressources que vous pouvez utiliser pour fermer automatiquement les ressources qui, explicitement ou implicitement à mettre en œuvre en java.io.Fermer ou java.lang.AutoCloseable

finaliser

finalize est appelé lorsqu'un objet est des ordures collectées. Vous aurez rarement besoin de le remplacer. Un exemple:

public void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}

19voto

Kevin R Points 305
  • "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 est contenu 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é.

6voto

Vorapsak Points 79

http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/

final – déclaration de constante.

enfin, Le bloc finally est toujours exécuté lorsque le bloc try sorties, à l'exception du Système.exit(0) appel. Cela garantit que le bloc finally est exécuté, même si une exception inattendue se produit. Mais finalement, est utile pour plus que juste la gestion des exceptions - il permet au programmeur pour éviter d'avoir un code de nettoyage accidentellement court-circuité par un retour, de poursuivre ou de pause. Mettre de nettoyage de code dans un bloc finally est toujours une bonne pratique, même si aucune des exceptions sont prévues.

finalize() – méthode d'aide à la collecte des ordures. Une méthode qui est appelée avant qu'un objet est mis au rebut par le garbage collector, permettant de nettoyer son état. Ne doit pas être utilisé pour libérer les non-mémoire de ressources comme les descripteurs de fichiers, sockets, de connexions de base de données, etc, car Java n'a qu'un nombre fini de ces ressources et vous ne savez pas quand la collecte des ordures est d'aller à coup de pied pour libérer les ressources de la mémoire par le biais de la méthode finalize ().

Avez-vous essayer de chercher sur google, et de besoin d'éclaircissements pour des explications?

6voto

root.ctrlc Points 596

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 ne suis pas tout à fait sûr que ce soit un mot clé, mais il existe une fonction finalize () dans la classe Object.

6voto

venom Points 36

finale: final est un mot-clé. La variable decleared comme définitive devrait être initialisé qu'une seule fois et ne peut pas être modifié. Des classes Java déclarée final ne peut pas être prolongé. Les méthodes déclarées comme final ne peut pas être remplacée.

enfin: enfin c'est un bloc. Le bloc finally est toujours exécuté lorsque l' essayez de bloquer les sorties. Cela garantit que le bloc finally est exécuté même si une exception inattendue se produit. Mais finalement, est utile pour plus que juste la gestion des exceptions - il permet au programmeur de éviter d'avoir un code de nettoyage accidentellement court-circuité par un retour, continuer, ou de les casser. Mettre de nettoyage de code dans un bloc finally est toujours une bonne pratique, même si aucune des exceptions sont prévues.

finaliser: finaliser une méthode. Avant qu'un objet est des ordures collectées, l' système d'exécution des appels de sa méthode finalize (). Vous pouvez écrire du système les ressources de la libération code dans la méthode finalize() avant d'arriver à ordures recueillies.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X