24
août
2005
SCJP 5.0 Défi 3.3: Boxing/UnBoxing
août
2005
Cela donnera une erreur de compilation.
Pourquoi me direz-vous ? n’y a-t-il pas l’autoboxing qui rentre en jeux.
Si, mais l’autoboxing n’est pas si évolué qu’on pourrait le penser.
Car ici, en plus de l’autoboxing, il devrait faire une promotion de int en long.
Et cela, le compilateur ne le fera pas de lui-même.
Une solution possible est de rajouter un L derrière le premier chiffre, indiquant bien que c’est un long. Et alors, cela compilera comme il faut.
methode(10L, 10);
L’autre solution est évidemment de remplacer Long par Int dans les paramètres.
2 Commentaires + Ajouter un commentaire
Commentaires récents
Archives
- janvier 2012
- novembre 2010
- février 2009
- janvier 2009
- décembre 2008
- septembre 2008
- août 2008
- décembre 2007
- octobre 2007
- septembre 2007
- juillet 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007
- décembre 2006
- novembre 2006
- octobre 2006
- septembre 2006
- août 2006
- juillet 2006
- juin 2006
- mai 2006
- avril 2006
- février 2006
- janvier 2006
- décembre 2005
- novembre 2005
- octobre 2005
- septembre 2005
- août 2005
- juillet 2005
- juin 2005
- mai 2005
- avril 2005
Catégories
- Certification
- Défis
- Devoxx
- Devoxx 2008
- Devoxx 2010
- Devoxx France 2012
- Divers
- Événements Java
- Fiches
- Hardware
- In English
- Java
- JavaDay 2006
- JavaFX
- JavaOne 2005
- JavaOne 2006
- JavaOne 2007
- Javapolis 2005
- Javapolis 2006
- Javapolis 2007
- JBoss
- Livres
- Mac
- NetBeans
- OpenJDK
- Pensée
- Performance
- Perles
- Sun Tech Days Paris 2007
- Traduction

Un article de vbrabant
J’aime bien ceux là aussi :
<br />
static void methode(int… a) {
System.out.println(« a »);
}
static void methode(Integer a, Integer b) {
System.out.println(« b »);
}
static void methode(Number a, Number b) {
System.out.println(« c »);
public static void main(String[] args) throws Exception {
short s = 1;
methode(10, 10);
methode(s, s);
static void methode(int... a) { <br />
System.out.println("a"); <br />
} <br />
static void methode(Integer a, Integer b) { <br />
System.out.println("b"); <br />
} <br />
static void methode(Number... a) { <br />
System.out.println("c"); <br />
} <br />
<br />
public static void main(String[] args) throws Exception { <br />
short s = 1; <br />
methode(10, 10); <br />
methode(s, s); <br />
Ben … théoriquement, la méthode statique « methode » est appelable par un « Maclasse.methode(…) », donc je serais tenté de dire ok pour la réponse 3.
Mais ça me semble beaucoup trop facile.
Je pencherai finalement sur la réponse 1 à cause du type de paramètres : 10 et 10 sont les int.
Il me semble que « methode(10l, 10) » serait un appel plus juste pour la méthode statique (bien que je ne suis pas sûr q’un long puisse être définit par un int suivit d’un « l » comme un float l’est par un int suivit d’un « f ».