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 :

Methode qui renvoi 2 instances?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Par défaut Methode qui renvoi 2 instances?
    Bonjour à tous, je voudrais créer une méthode qui me renvoi telle ou telle instance comme ça:

    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
    public Class getDriver(String parametre){
     
        Class instance;
     
    if(parametre.equals("A")) {
     
           instance = Instance_A ;
        }
        else if(parametre.equals("B")) {
     
           instance = Instance_B ;
        }
     
     
        return instance;
     
    }

    J'ai voulu renvoyer un objet du type Class mais ça ne marche pas.
    Il y a un moyen de renvoyer directement l'instance?

    Merci à vous

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ca sert à rien de lui renvoyer un objet de type Class... Par contre, tu peut choisir de lui renvoyer Object, vu que toutes les classes déscendent d'Object ça devrait jouer

    Ou alors une classe ou une interface dont dépendent tous deux instanceA et instanceB

  3. #3
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Oui comme ceci (j'aime pas trop les if à la pelle, je préère le switch donc:


    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
    public Object getDriver(String parametre){
     
        Object instance = null;
     
        switch (parametre.charAt(0)) {
            case 'A' :
                instance = Instance_A;
                break;
            case 'B' :
                instance = Instance_B;
                break;
            default: break;
        }
        return instance;
     
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    Concernant les switch, on m'a toujours dit que c'etait plus gourmand car il rentrait dans chaque cas, contrairement aux if...mais je n'ai jamais vraiment vérifié

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Par défaut
    Ok, mais comment faire pour apeller cette methode et accéder directement aux méthode de l'instance renvoyée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getDriver("A").UneMethode();
    Ca ne marche pas, il faut que je caste l'objet renvoyé?

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par sceadu16
    Ok, mais comment faire pour apeller cette methode et accéder directement aux méthode de l'instance renvoyée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getDriver("A").UneMethode();
    Ca ne marche pas, il faut que je caste l'objet renvoyé?
    Oui.

    Mais si tu as une interface XXX que tes 2 classes implément, tu peut aussi retourner un objet de type XXX et ensuite tu n'as pas besoin de cast.

  7. #7
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Citation Envoyé par qdqdfqfdqdxcwcrzsdfw
    Concernant les switch, on m'a toujours dit que c'etait plus gourmand car il rentrait dans chaque cas, contrairement aux if...mais je n'ai jamais vraiment vérifié
    Je ne pense pas... dans mon souvenir des cours de compilation, à la compilation justement le switch est traduit en if (je ne sais pas si c'est le cas en java), c'est juste pour moi un soucis de lecture.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Par défaut
    Mon problème c'est que les 2 classes que je veux renvoyer possèdent les même méthodes (même nom, même nombre de paramètres), comment je peux faire alors en utilisant le principe d'interface pour accéder à l'une ou à l'autre classe?

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour la question initiale :
    Tu peux renvoyer une instance d'un objet à partir de la classe, tu as cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class.forName("nom_complet_de_classe").newInstance();
    Par contre, ça renvoi un "Object" (à caster par l'appelant)...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2011, 13h44
  2. Réponses: 3
    Dernier message: 23/09/2009, 09h52
  3. Réponses: 3
    Dernier message: 13/07/2006, 17h56
  4. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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