IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Passage de paramètres optionnels


Sujet :

Langage Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut Passage de paramètres optionnels
    Bonjour,

    J'aurais une petite question : est il possible de passer des paramètres de manières optionnels à une foction Java ?

    Si jamais celà n'était pas possible, comment faire autrement ?

    Sinon, dans le cas où le sujet existerat déjà, je vous prie de m'excuser, mais malgrè une recherche sur le Forrum et le FAQ, je n'ai rien trouvé sur ce sujet... Si jamais il existe déjà, je vous prie d em'excuser.

    Par avance je vous remercie.

    Marco.

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Non il n'est pas possible d'avoir des parametres optionnels au sens où tu les entend : par contre rien dne t'empeche de passer en parametre un tableau ou une collection d'Object pour simuler ce comportement

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    FAQ Java nombre variable de paramètres.
    Sinon tu peux toujours redéfinir ta méthode avec des signatures différents.

    Bonne chance.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Pour poursuivre également, rien ne t'empeche de passer un pointeur null à ta fonction.

    Tu as également la solution de surcharger ta méthode et de la décliner suivant plusieurs types d'appel, et pour eviter de dupliquer le code tu peux appeler une méthode privée commune de tes méthodes surchargées.

    [edit:ouned par modjo ]
    Mon site : TKT-Web =)

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Delwyn
    Tu as également la solution de surcharger ta méthode et de la décliner suivant plusieurs types d'appel, et pour eviter de dupliquer le code tu peux appeler une méthode privée commune de tes méthodes surchargées.
    +1

    Mais tu n'as pas forcément besoin d'une méthode privée.
    Il suffit de coder la méthode qui prend le maximum de paramètre, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void method(String param1, Date param2, int param3) {
    	// Cette méthode fait tout le travail 
    	// ...
    	// ...
    }
    Et d'ensuite la surcharger avec les versions "allégées" en paramètres, qui se contenteront en fait de l'appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void method(String param1, Date param2) {
    	method(param1, param2, 0);
    }
     
    public void method(String param1) {
    	method(param1, new Date());
    }
    Cela te permet de "simuler" le mécanisme de paramètre par défaut, en "enlevant" à chaque fois un paramètre...







    Maintenant, si tu as un très grand nombre de paramètre, et que tu veux fournir des valeurs par défaut à différents paramètres quel que soit leurs emplacements, tu peux utiliser l'idiome des "paramètres nommées", en utilisant en fait un seul paramètre qui les regroupera tous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(MethodParam param) {
       // ...
    }
    Et où MethodParam est une classe qui propose des méthodes pour définir chacun des paramètres, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class MethodParam {
     
    	String param1;
    	Date param2 = null;
    	int param3 = 0;
     
    	/** Constructeur privée : utiliser la méthode static create */
    	private MethodParam(String param1) { 
    		// empty
    	}
     
    	public static MethodParam create(String param1) {
    		return new MethodParam(param1);
    	}
     
    	public MethodParam param2(Date param2) {
    		this.param2 = param2;
    		return this;
    	}
     
    	public MethodParam param3(int param3) {
    		this.param3 = param3;
    		return this;
    	}
    }
    La méthode static create() permet de créer une nouvelle instance (en obligeant la présence d'un paramètre), et les autres méthodes paramX() permettent de définir les autres paramètres optionnels. Ces méthode retourne l'instance this afin de pouvoir enchainer les appels.

    Ainsi à l'utilisation tu peux avoir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	method( MethodParam.create("test") );
    	method( MethodParam.create("test").param2(new Date()) );
    	method( MethodParam.create("test").param2(new Date()).param3(0) );
    	method( MethodParam.create("test").param3(0) );

    a++

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour à tous,

    Merci de toutes ces réponses. Finalement, je vais certainement utiiser la méthode de la surcharge...

    En fait mon projet a été généré automatiquement par un outil qui s'appelle JavaCC (pour faire un parser).

    La méthode que je souhaite modifier est appelée un peut partout dans mon programme et ne voudrais pas avoir à tout réécrire.

    Maintenant, je ne sais pas si c'est vraiment la bonne solution... Sachant que en fait dans cette histoire je ne souhaite pas traiter les premières lignes du fichier d'origine et que là dedans comme il s'agit d'un parser, le programme me décompose les mots de "vocabulaire" qu'il rencontre dans le fichier d'origine.

    J'espère que je suis bien clair en fait ?

    Par avance merci les amis.

    Marco.

Discussions similaires

  1. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58
  2. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  3. [XSL] Passage de paramètres à un template
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2003, 13h28
  4. passage de paramètres
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/02/2003, 17h28
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo