Salut,
Soit le code suivant:
Le compilateur me retourne une erreur a la declaration de c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Test { public static void main(String[] args) { int a = 5; Integer b = a; System.out.println(a); Double c = a; System.out.println(c); } }
Je me disais qu'un int etant plus petit qu'un double (le primitif), il y aurait une conversion automatique en double, puis boxing pour l'assignation vers Double (l'objet). Meme apres avoir fait un cast explicit, je me retrouve avec la meme erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ javac Test.java Test.java:6: incompatible types found : int required: java.lang.Double Double c = a; ^ 1 error $
Seul fonctionne un cast vers le primitif avant l'assignation vers l'objet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Double c = (Double)a;. Quel est la regle des conversions dans ce cas et pourquoi mon raisonnement a t il echoue ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Double c = (double)a;
J'imagine que la solution est la meme que pour l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Test2 { public static void doStuff(Long a) { System.out.println("Value is [" + a + "]"); } public static void main(String[] args) { int a = 5; doStuff(a); } }Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ javac Test2.java Test2.java:7: doStuff(java.lang.Long) in Test2 cannot be applied to (int) doStuff(a); ^ 1 error $
Partager