Mise en place
Fichier Canard.java
Fichier Mare.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class Canard { public static final String CRI = "Coin ! Coin !"; }
Manipulation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class Mare { public static void main(String[] arguments) { System.out.println("Le canard dit : " + Canard.CRI); } }
1) javac Mare.java
-> Les deux fichiers Java sont compilés.
2) java Mare
-> Affiche "Le canard dit : Coin ! Coin !"
4) Changement de "Coin ! Coin !" en "Miaou !" dans le fichier Canard.java.
5) javac Canard.java
-> Seul Canard.java est compilé.
6) java Mare
-> Affiche "Le canard dit : Coin ! Coin !"
7) rm Mare.class
-> Affiche "Le canard dit : Coin ! Coin !"
Conclusion :
La constante CRI n'est visiblement par référencée, mais sa valeur directement "embarquée" dans les classes qui l'utilisent (ici la Mare.java). A ma connaissance, il s'agit du seul cas où une modification dans un fichier *.java se répercute sur d'autres *.class que le sien (ou les siens dans le cas de classes internes).
Question :
Existe-t-il d'autres cas de figures et, idéalement, un principe général ?
Partager