Envoyé par
thelvin
Il existe plusieurs méthodes de même nom, "testIt()." Chacune d'entre elle prend en paramètre des types différents, car une classe ne peut pas avoir plusieurs méthodes de mêmes noms et de mêmes paramètres.
On dit que les méthodes "testIt()" sont surchargées.
Quand on l'appelle, le compilateur choisit quelle est la bonne, en fonction du type du paramètre qui est passé.
Ici le paramètre est 1. Il s'agit d'un littéral numérique entier, qui n'a pas de L majuscule ou minuscule qui indiquerait le type long. Un littéral numérique entier qui n'est pas long, est forcément de type int (définition Java).
Y a-t-il une méthode testIt() qui accepte un int en paramètre ?
Oui => tu as ta réponse.
Non => On va chercher s'il y en a une qui accepte un type vers lequel le paramètre peut être implicitement converti.
Pour int c'est : long, float, double, Integer, Number, Object. Dans cet ordre. long, float, double et Integer c'est dans cet order par définition Java. Number et Object, c'est parce que ce sont les ascendants de Integer, du plus proche au plus lointain.
Toujours pas => On essaie de gérer les éllipses en repartant de int... et en réappliquant le même ordre.
Toujours pas => Aucune méthode n'accepte le paramètre. Le programme ne compile pas.