Puzzler Java
Oct 12, 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.
← Older post
Let me introduce (drumroll...) DbSetup
Oct 2, 2012
Newer post →
Une Java Championne chez Ninja Squad?!
Oct 19, 2012
Our books on sale
Become a ninja with Angular

Our free-price book about Angular, always up-to-date, in English and in French
Become a ninja with Vue

Our free-price book about Vue, always up-to-date, in English and in French
Next training sessions
- From Nov 17 to Nov 20, 2025Angular: Ninja to Hero (remote)
- From Dec 1 to Dec 4, 2025Vue: Zero to Ninja (remote)
- From Dec 8 to Dec 11, 2025Angular: Zero to Ninja (remote)
- From Jan 19 to Jan 22, 2026Angular: Ninja to Hero (remote)
- From Feb 9 to Feb 12, 2026Vue: Zero to Ninja (remote)
- From Mar 2 to Mar 5, 2026Angular: Zero to Ninja (remote)