Bonjour,
J'aimerais initialiser une ArrayListe dans les paramètres d'une fonctions :
Comment faire ??Code:
1
2
3 public ArrayList<ArrayList> maFonction(ArrayList<ArrayList> = "je ne sais pas quoi mettre"){ }
Merci
Mageni
Version imprimable
Bonjour,
J'aimerais initialiser une ArrayListe dans les paramètres d'une fonctions :
Comment faire ??Code:
1
2
3 public ArrayList<ArrayList> maFonction(ArrayList<ArrayList> = "je ne sais pas quoi mettre"){ }
Merci
Mageni
Bonjour
En java, la déclaration d'une fonction ne contient aucune logique. On ne peut pas déclarer une valeur par défaut et encore moins exécuter du code.
Pourquoi voudrais-tu faire ça?
la seule méthode pour des valeurs par défaut serait :
Code:
1
2
3
4 public ArrayList<ArrayList<?>> maFonction(ArrayList<ArrayList<?>> list){ if (list==null) list=.......;//ton code pour initialiser une valeur par défaut. }
Bonjour,
Merci de vos réponses.
Effectivement, je n'avais pas vérifié.
Comme je faisais un passage pour un bout de code PHP -> JAVA, je n'avais pas essayé de voir si ça marchait avec un truc tout bête :
Et ça marche pas !Code:public void maFonction(int i = 0) {}
Donc j'ai trouvé un autre moyen. Mais je trouve dommage qu'on ne puisse pas faire comme ça.
Du coup on est obligé de faire comme toi tchize_ ...
Pourquoi un tel choix pour java ??
Ba pour éviter d'avoir 36 arguments inutiles et déjà initialisés.Citation:
Pourquoi voudrais-tu faire ça?
En php c'est super pratique ^^
Encore merci de vos réponses.
Mageni
Je ne sais pas ce que tu appelles une fonction. Est-ce une méthode de classe?
Dans ce cas, rappelle ta ArrayList dans son constructeur :
puis dans ta méthode :Code:
1
2
3
4
5 this.Liste = Liste; //et en bas de ta classe : ArrayList Liste;
Code:
1
2 Liste.clear();
Alors, s'ils sont inutiles, pourquoi les mettre dans la signature? ;)Citation:
Ba pour éviter d'avoir 36 arguments inutiles et déjà initialisés.
Après, le "déjà initialisés" m'intrigue, peut-être que ces arguments ont leur place en tant que membre de la classe dans ce cas là.
Sinon, il y a un autre moyen pour avoir des valeurs par défaut : la surchage.
Tu as une méthode :
Si la plupart du temps, tu appelles cette méthode avec le second argument à 0, tu peux surchager la méthode:Code:Object faitTraitement(String arg1, int arg2)
Code:
1
2
3
4 Object faitTraitement(String arg1) { return faitTraitement(arg1, 0); }
Parce que, contrairement à java, php était à l'origine un language procédural qui, progressivement, a migré en language objet. Ce genre de système pose des problèmes pas faciles à résoudre en language objet. Dans ton cas, la méthode "propre" pour gérer les valeur par défaut (imaginons trois paramètres de type int, String et float):
Ce qui n'est pas beaucoup plus contraignant mais au moins évite les problèmes qui se posent lors de l'héritage ;)Code:
1
2
3
4
5
6
7
8 public long uneMethode(int i , String s, float f){ } public long uneMethode(int i, String s){ return uneMethode(i,s,0.0f); } public long uneMethode(int i){ return uneMethode(i,"",0.0f); }
Merci !!:D
Exactement ce qu'il me fallait.
Merci encore de toutes ces réponses. :D