OVH Cloud OVH Cloud

Question à propos de "final"

4 réponses
Avatar
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

4 réponses

Avatar
pasde.bcausse.spam
François Grondin wrote:

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


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

Avatar
Arnaud Berger
Bonjour,

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/final-keyword.shtml#vars

Cordialement,

Arnaud

"François Grondin" a écrit dans le message
news: iRuge.61550$
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




Avatar
Arnaud Berger
Lire : final String string="toto";

"Arnaud Berger" a écrit dans le message news:
d5uvj2$7en$
Bonjour,

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/final-keyword.shtml#vars

Cordialement,

Arnaud

"François Grondin" a écrit dans le
message

news: iRuge.61550$
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








Avatar
François Grondin
Merci pour l'information.

François

"Arnaud Berger" wrote in message
news:d5uvj2$7en$
Bonjour,

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/final-keyword.shtml#vars

Cordialement,

Arnaud

"François Grondin" a écrit dans le
message

news: iRuge.61550$
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