[jdk5.0][ellipse] quelques questions
Bonjour,
Je me pose des questions sur l'ellipse.
Voici un code juste pour baser le debat.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import java.util.List;
import java.util.LinkedList;
public class MyCollection
{
private List<MyObject> myObjects = new LinkedList<MyObject>();
public void add(MyObject o){ myObjects.add(o); }
/* // deja defini par l'ellipse
public void add(MyObject[] os){
for(MyObject o : os){ myObjects.add(o); }
}
*/
public void add(MyObject... os){
for(MyObject o : os){ myObjects.add(o); }
}
}
class MyObject {} |
Comment la jvm peut elle faire la difference entre la premiere version de add et la derniere quand on ne passe qu'un object en parametre?
Et une autre question theorique mais qui ne servira pas (ou presque pas dans la pratique), si on declare
Code:
public void add(Object... os)
les appels
Code:
1 2
| add(new Object[1],new Object[2]) // os contient ces deux tableaux
add(new Object[6]) // os = le tableau créé |
sont clairs
Cela implique qu'il est impossible que os soit de taille 1 et contenant une reference vers un tableau, non?
mais
Code:
add(new MyObject[5])
ne peux determiner quelle methode appeler, non?
Est ce que est accepté?
Merci d'avance
Remarque : Ce n'est pas la peine de me dire d'aller lire quelquechose sur ce forum, j'ai lu tout ce qui était en raport, mon code est juste une base pour des questions donc oui il ne sert pas à grand chose... Et je precise aussi, actuellement je ne dispose pas de jdk installé sur l'ordinateur que j'utilise...
Re: [jdk5.0][ellipse] quelques questions
Citation:
Envoyé par TabrisLeFol
Remarque : Ce n'est pas la peine de me dire d'aller lire quelquechose sur ce forum, j'ai lu tout ce qui était en raport, mon code est juste une base pour des questions donc oui il ne sert pas à grand chose... Et je precise aussi, actuellement je ne dispose pas de jdk installé sur l'ordinateur que j'utilise...
Je ne te dirai pas d'aller lire quelque chise sur ce forum, mais sur mon blog. Tu y apprendra qu'il est possible d'exécuter du code comme celui que tu as mis en exemple, sans avoir de JDK installé sur sa machine.
Citation:
Comment la jvm peut elle faire la difference entre la premiere version de add et la derniere quand on ne passe qu'un object en parametre?
La JVM donnera toujours priorité à la méthode ayant la signature la plus proche. Aussi, si un seul argument est passé, il donnera priorité à la méthode qui n'attend qu'un seul argument.
Jette un oeil sur le défi que je viens d'écrire aujourd'hui, justement. Il n'y a pas encore la réponse avec l'explication, mais cela viendra sûrement la semaine prochaine.