Bonjour,
Je cherche des explications sur un cas rencontré sous java6:
un Bean renvoie un code sous la forme d'un Short.
je souhaite affiché le libellé en fonction du code.
j'obtiens donc le code suivant :cela marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 final short TEST1 = 1; Short test = monBean.getCode(); switch (test) { case TEST1: System.out.println("=>"+TEST1); break; default: System.out.println(test); break; }
maintenant le problème est que les constantes sont dans une autre classe.
mon code initial devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class Constantes { public static final Short TEST = 1; }
Là j'ai une erreur "Les expressions de case doivent correspondre à des expressions de constantes"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //final short TEST1 = 1; Short test = monBean.getCode(); switch (test) { case Constantes.TEST: System.out.println("=>"+TEST1); break; default: System.out.println(test); break; }
je me dit alors qu'il suffit de convertir le Short en short
mais j'ai toujours l'erreur "Les expressions de case doivent correspondre à des expressions de constantes" or TEST1 est bien une constante (final).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 final short TEST1 = Constantes.TEST; Short test = monBean.getCode(); switch (test) { case TEST1: System.out.println("=>"+TEST1); break; default: System.out.println(test); break; }
Et ceci même si je fait "final short TEST1 = Constantes.TEST.shortValue();"
La seule solution est de modifier la classe Constante pour que TEST soit de type short et non plus Short.
En espérant avoir été clair, est ce que quelqu'un pourrait m'expliquer les raisons de ceci.
Partager