Question à propos de "final"
Le
François Grondin
Bonjour à tous.
Dernièrement, moi et d'autres collègues de travail nous sommes interrogés à
propos de l'utilisation de "final" en Java. Nous étions tous d'accord
concernant son utilité pour définir une classe ou une méthode qui n'est pas
réimplémentée, ou pour définir les paramètres d'une méthode..
Cependant, nous avions des doutes concernant son utilisation dans une
méthode. Une variable définie à l'intérieur d'une méthode a-t-elle avantage
ou non à être définie finale? Quelqu'un a-t-il des arguments ou des
références sur le sujet?
Par exemple :
public final class MyClass
{
public MyClass()
{
}
public final void add(final Integer anInteger)
{
final int i = 4;
System.out.println(i + anInteger.intValue());
}
}
Merci.
François
Dernièrement, moi et d'autres collègues de travail nous sommes interrogés à
propos de l'utilisation de "final" en Java. Nous étions tous d'accord
concernant son utilité pour définir une classe ou une méthode qui n'est pas
réimplémentée, ou pour définir les paramètres d'une méthode..
Cependant, nous avions des doutes concernant son utilisation dans une
méthode. Une variable définie à l'intérieur d'une méthode a-t-elle avantage
ou non à être définie finale? Quelqu'un a-t-il des arguments ou des
références sur le sujet?
Par exemple :
public final class MyClass
{
public MyClass()
{
}
public final void add(final Integer anInteger)
{
final int i = 4;
System.out.println(i + anInteger.intValue());
}
}
Merci.
François

Poser une question


1) ca securise le code.
2) facilite les possibilites d'optimisation
3) final class & final methode font doublons (mais je pinaille)
--
Bruno Causse
http://perso.wanadoo.fr/othello
Généralement, une variable locale déclarée final dans une méthode, l'est
parce qu'une "classe locale anonyme" l'utilise également :
public void methode (){
String string="toto";
new Thread(new Runnable(){
public void run(){
System.out.println(string);
}
}).start;
/* string="tata" */
}
Ceci assure que la valeur reçue par la Runnable ne sera pas modifiée
ultérieurement.
En effet, le compilateur arrivant dans cette méthode, "crée" une variable
privée dans le Runnable, possédant la valeur spécifiée ("toto").
La ligne commentée est rejetée par le compilateur, et de toutes façons,
cette valeur ("tata") ne serait jamais prise en compte par le Runnable qui a
déjà reçu une copie de "string" avec la valeur "toto".
Plus d'infos ici :
http://renaud.waldura.com/doc/java/...shtml#vars
Cordialement,
Arnaud
"François Grondin" news: iRuge.61550$
"Arnaud Berger" d5uvj2$7en$
François
"Arnaud Berger" news:d5uvj2$7en$