L'exemple de code est le suivant :
public class OverloadingTest {
public static void test(Object obj){
System.out.println("Object called");
}
public static void test(String obj){
System.out.println("String called");
}
public static void main(String[] args){
test(null);
System.out.println("10%2==0 is "+(10%2==0));
test((10%2==0)?null:new Object());
test((10%2==0)?null:null);
}
Et la sortie est :
Chaîne appelée
10%2==0 est vrai
Objet appelé
Chaîne appelée
Le premier appel à test(null)
invoque la méthode avec String
argument, ce qui est compréhensible d'après The Java Language Specification
.
1) Quelqu'un peut-il m'expliquer sur quelle base test()
est invoqué dans les appels précédents ?
2) De nouveau, lorsque nous mettons , disons a if
condition :
if(10%2==0){
test(null);
}
else
{
test(new Object());
}
Il invoque toujours la méthode avec String
argument .
Le compilateur calculera-t-il l'expression (10%2)
lors de la compilation ? Je veux savoir si les expressions sont calculées à la compilation ou à l'exécution. Merci de votre compréhension.