Puzzler Java
12 oct. 2012
Un petit puzzler Java pour se détendre ?.
Considérons le programme Java suivant :
public class TernaryPuzzler1 {
public static void main(String[] args) {
System.out.println(getBase(true) instanceof Sub1);
System.out.println(getBase(true));
}
private static Base getBase(boolean condition) {
Base result = condition ? new Sub1() : new Sub2();
return result;
}
}
class Base {
}
class Sub1 extends Base {
@Override
public String toString() {
return "Sub1";
}
}
class Sub2 extends Base {
@Override
public String toString() {
return "Sub2";
}
}
Que se passe-t-il lorsqu'on l'exécute? Ne vous inquiétez pas, il n'y a pas de piège. Oui, la condition est
vraie, donc une instance de Sub1
est retournée, et les lignes suivantes s'affichent donc à l'écran :
true
Sub1
Maintenant appliquons le même code aux classes Number
, Long
et Double
:
public class TernaryPuzzler2 {
public static void main(String[] args) {
System.out.println(getNumber(true) instanceof Long);
System.out.println(getNumber(true));
}
private static Number getNumber(boolean condition) {
Number result = condition ? new Long(10L) : new Double(20.0);
return result;
}
}
Que se passe-t-il lorsqu'on l'exécute? Attention, là, il y a un piège. Cliquez ici pour afficher la réponse.
Si vous voulez comprendre pourquoi, lisez donc la réponse à cette question sur StackOverflow, qui a inspiré ce post.
← Article plus ancien
Let me introduce (drumroll...) DbSetup
2 oct. 2012
Article plus récent →
Une Java Championne chez Ninja Squad?!
19 oct. 2012
Étiquettes
Nos livres en vente
Deviens un ninja avec Angular

Notre livre sur Angular à prix libre, maintenu à jour, en français et en anglais
Deviens un ninja avec Vue

Notre livre sur Vue à prix libre, maintenu à jour, en français et en anglais
Prochaines sessions de formation
- Du 6 au 9 oct. 2025Angular : de Zéro à Ninja (à distance)
- Du 17 au 20 nov. 2025Angular : de Ninja à Héros (à distance)
- Du 1 au 4 déc. 2025Vue : de Zéro à Ninja (à distance)
- Du 8 au 11 déc. 2025Angular : de Zéro à Ninja (à distance)
- Du 19 au 22 janv. 2026Angular : de Ninja à Héros (à distance)
- Du 9 au 12 févr. 2026Vue : de Zéro à Ninja (à distance)
- Du 2 au 5 mars 2026Angular : de Zéro à Ninja (à distance)