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 :

Paramètre optionnel


Sujet :

Langage Java

  1. #1
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut Paramètre optionnel
    Bonjour,
    je me demandais si y avait moyen d'avoir un paramètre optionnel dans l'appel d'une méthode.
    Pour l'instant, j'ai l'impression que si je veux un paramètre optionnel je dois créer deux méthodes : une avec un paramètre, une avec deux paramètres.

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Citation Envoyé par Diablo_22
    Bonjour,
    Pour l'instant, j'ai l'impression que si je veux un paramètre optionnel je dois créer deux méthodes : une avec un paramètre, une avec deux paramètres.
    C'est exactement comme cela qu'il faut proceder !

  3. #3
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    et en utilisant un vecteur ???

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Bien sur dans ce cas (je suppose que tu parle d'un tableau), tu pourras mais c'est pas forcement tres propre.

    Ca dépend de ce que tu veux faire exactement en fait .

  5. #5
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Hello,

    Java 5 intègre une nouvelle fonctionalité. L'ellipse...

    Tu peux donner le nombre de paramètre que tu veux, il semblerait.. Mais je n'ai jamais testé... Va voir là:http://lroux.developpez.com/article/...e_2#Larguments

  6. #6
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ploxien
    Tu peux donner le nombre de paramètre que tu veux, il semblerait.. Mais je n'ai jamais testé... Va voir là:http://lroux.developpez.com/article/...e_2#Larguments
    Tout à fait l'ellipse permet d'avoir un nombre d'argument variable, mais ils doivent avoir le même type de base...

    La méthode recevra en fait un tableau en paramètre. Par exemple on peut très bien écrire la méthode main() de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	public static void main(String... args)

    Maintenant si c'est pour un paramètre optionnel ce n'est pas vraiment la meilleure solution... Il faudrait connaitre ton besoin en détail...

    a++

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Avec l'ellipse, comme le suggère ploxien, tu peux donner autant de paramètres que tu veux de 0 à n.
    Dans la méthode, tu récupères l'ensemble des paramètres sous la forme d'un tableau.
    Attention toutefois, tous les paramètres doivent être de même type !

    Si tes paramètres sont de types différents, alors, il te ne reste plus que la redéfinition de ta méthode. C'est à dire d'en créer plusieurs avec une liste d'arguments différents.
    [on me corrigera entre redéfinition et surcharge de méthode...]
    En général, c'est la méthode qui a le plus d'arguments qui fait le boulot, les autres, celles qui ont moins d'arguments, se "contentent" d'appeller la même méthode avec n+1 arguments avec une valeur par défaut. Je sais pas si je suis bien clair

    Pour ce qui est de l'utilisation des vecteurs, elle est à proscrire.
    Ils sont avantageusement remplacer par les Collections, Listes, Set & cie.
    [EDIT] Grillé par adiGuba

  8. #8
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Re,

    Je dis pas que c'est la meilleure solution, mais au lieu de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void fun(int param1, String param2){
    ...
    }
    private void fun(int param1, String param2, short param3){
    ...
    }
    Tu peux faire avec l'ellipse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void fun(int param1, String param2, short... param3){
    ...
    }
    Ce qui rend le short optional
    Encore une fois, je propose mais je ne suis pas persuadé que ce soit une solution optimale

    A+

    edit: Quand je dis "Ce qui rend le short optionel" je veux pas dire que tu peux te promener en calçon!!

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Citation Envoyé par ploxien
    Tu peux faire avec l'ellipse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void fun(int param1, String param2, short... param3){
    ...
    }
    Ce qui rend le short optional
    Encore une fois, je propose mais je ne suis pas persuadé que ce soit une solution optimale
    Effectivement, le paramètre de type short devient optionnel mais, avec cette syntaxe, il peut en accepter plusieurs!! Ce qui n'est pas très rigoureux dans la mesure où il n'en attend qu'au plus un

  10. #10
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ploxien
    Tu peux faire avec l'ellipse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void fun(int param1, String param2, short... param3){
    ...
    }
    Ce qui rend le short optional
    Encore une fois, je propose mais je ne suis pas persuadé que ce soit une solution optimale
    Le "problème" c'est que tu peux aussi appeller la méthode en lui passant plusieurs paramètre, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fun(0, "str", 1, 2, 3, 4, 5, 6);
    Ce n'est pas très "correct" pour un paramètre optionnel...



    Citation Envoyé par Fifan31
    Si tes paramètres sont de types différents, alors, il te ne reste plus que la redéfinition de ta méthode. C'est à dire d'en créer plusieurs avec une liste d'arguments différents.
    [on me corrigera entre redéfinition et surcharge de méthode...]
    Il s'agit bien de surcharge (méthode avec le même nom mais un nombre d'argument variable).
    La redéfinition intervient lors de l'héritage (même nom même paramètres).

    a++

  11. #11
    Membre éclairé Avatar de julien-blaise
    Homme Profil pro
    Développeur Java et C#
    Inscrit en
    Mai 2005
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java et C#

    Informations forums :
    Inscription : Mai 2005
    Messages : 458
    Par défaut
    Mais la méthode main n'est elle pas un exemple concret présent un peu partout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String[] args)
    Tu as donc un tableau de String de taille indéfini. Il ne te reste plus qu'a faire une boucle dépendant de la taille du tableau.
    A la limite si un tableau ne te convient pas une List (et plus généralement une Collection) devrait faire l'affaire.

    PS : Je propose ça car je ne connais pas l'ellipse et que je sais que certaine contraintes font qu'on ne peux pas toujours utiliser la version de JAVA que l'on voudrait

  12. #12
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    Je vous remercie pour les reponses et j'ai opter pour le vecteur vu mes besoins

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/08/2021, 15h52
  2. [VB.NET] Paramètre optionnels dans une procédure
    Par krfa1 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/05/2006, 15h22
  3. Fonction ou procédure avec paramètres optionnels ?
    Par [Silk] dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 14h55
  4. Paramètre optionnel dans une fonction
    Par bractar dans le forum Langage
    Réponses: 3
    Dernier message: 10/03/2006, 18h02
  5. paramètre optionnel dans une fonction
    Par titoumimi dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2006, 16h29

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