Je suis un peu confus: j'ai une fonction qui prend un objet comme argument. Mais le compilateur ne se plaint pas si je ne fais que passer une primitive et même reconnaître une primitive booléenne comme objet booléen. Pourquoi est-ce si?java: boolean instanceOf Boolean?
public String test(Object value)
{
if (! (value instanceof Boolean)) return "invalid";
if (((Boolean) value).booleanValue() == true) return "yes";
if (((Boolean) value).booleanValue() == false) return "no";
return "dunno";
}
String result = test(true); // will result in "yes"
Notez qu'un booléen n'est JAMAIS une instance de Boolean. Vous ne pouvez jamais passer une primitive à l'opérateur instanceof. Votre primitif booléen n'est jamais entré dans cette méthode, la boxe est arrivée quand l'invocation s'est produite et la conversion de l'invocation de la méthode a eu lieu! – Mishax