[JAVAC] Optimisation indésirable à la compilation
Bonjour à tous,
Je rencontre un problème avec des constantes finales après la compilation des sources en une seule étape :
Soit les deux classes A et B définies comme suit :
Fichier A.java :
Code:
1 2 3 4
| public class A
{
static final String S = "avant";
} |
Fichier B.java :
Code:
1 2 3 4 5 6 7
| public class B
{
public static void main(String args[])
{
System.out.println(A.S);
}
} |
On compile tout ça et on exécute B :
javac A.java B.java
java B
Le résultat affiché sur la console est :
On modifie A.java comme suit :
Fichier A.java :
Code:
1 2 3 4
| public class A
{
static final String S = "après";
} |
On compile A.java qui est le seul modifié et on exécute B :
javac A.java
java B
Le résultat affiché sur la console est toujours :
Alors qu’on pouvait s’attendre à obtenir C'est franchement curieux... :weird:
Merci par avance !
[1] Testé avec les JDK Oracle 6/7/8