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

AWT/Swing Java Discussion :

Parametre de type class


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Parametre de type class
    bonjour a tous;
    mon probleme est le suivant:
    -j'utilse dans mon programme plusieurs classes
    -une methode1 qui permet de savoir quelle classe a choisir
    -une autre methode2 appelee par la premiere et qui effectue un traitement
    qui depond de la classe choisie
    question :
    Est il possible de passer un parametre de type class ?
    si oui comment le faire car j'ai essaye de mettre
    public void methode2(class LaClasse){...}
    et ca marche pas

    merci d'avance

  2. #2
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    et bien, toutes tes classes héritent implicitement de Object, donc si tu veux passer une instance de n'importe quelle classe, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void methode2(Object MonObjet){
    //traitement selon les classes
    }
    mais je te dis ça en étant pas sûr d'avoir compris tout ton problème. Là je pars du fait que ta méthode 1 crée une instance d'une classe particulière (en fonction d'un critère prédéfini) et que ta méthode 2 doit traiter cela ...
    Explique moi si je suis à côté de la plaque

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

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Il ne faut pas employer class laClasse, mais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ...(NomDeLaClasse instance)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    methode1 permet juste de savoir quelle classe a utiliser
    et suivant le traitement qu'on effectue dans la methode2 on sait si on va instancier la classe ou pas

  5. #5
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    euh, a pas tout compris

    Exemple (pas de balise c'est du faux code ... )

    String UnTypeDeClasse=methode1();
    //UnTypeDeClasse= "ArrayList";
    methode2(UnTypeDeClasse); --> et là, si c'est une ArrayList, on crée une arraylist, si c'est un tableau on crée un tableau etc....

    C'est un truc dans ce genre là ?

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par mzibri
    Est il possible de passer un parametre de type class ?
    si oui comment le faire car j'ai essaye de mettre
    public void methode2(class LaClasse){...}
    et ca marche pas
    Il faut utiliser la classe Class (avec un C majuscule) comme type de paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void methode2(Class LaClasse){...}

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    je ne sais pas si tu as fait une faute de frappe mais c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void methode2(Class LaClasse){...}
    sinon, qu'est ce qui ne marche pas ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    bonjour,
    ah oui je c'etait un "c" minuscule
    j'ai essayer de mettre votre proposition mais ..
    voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void methode1(){
    .
    .
    Class Operation;//Operation est une classe deja construite de type JFrame
    methode2(Opertaion);
    .
    .
    }
    La deuxieme methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void methode2(Class LaClasse){
    .
    .
    //un certain traitement 
    .
    .
    LaClasse instance=new LAClasse();
    instance.setVisible(true);
    .
    .
    }
    le Compilateur dit "cannot resolve symbol"
    en poitant sur LaClasse
    que vous en dites?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void methode2(Class laClasse){
    .
    .
    //un certain traitement 
    .
    .
    Object instance=laClasse.newInstance();
    .
    .
    }
    Par contre pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instance.setVisible(true);
    il faut pouvoir caster la variable instance... plusieurs possibilités :
    * tu sais que instance est un JComponent ou autre, dans ce cas tu castes en JComponent
    * tu effectue ce setVisible à un autre endroit où tu peux caster dans le type réel
    * tu appliques la méthode setVisible par réflexion, c'est plus lourd et il y a de l'overhead

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par MangeurVasqué
    Essaye
    Par contre pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instance.setVisible(true);
    il faut pouvoir caster la variable instance... plusieurs possibilités :
    * tu sais que instance est un JComponent ou autre, dans ce cas tu castes en JComponent
    * tu effectue ce setVisible à un autre endroit où tu peux caster dans le type réel
    * tu appliques la méthode setVisible par réflexion, c'est plus lourd et il y a de l'overhead
    bon là j'ai rien compris

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    La méthode Class.newInstance() retourne un objet de type Object.
    Si tu souhaites lui appliquer des méthodes autres que celles définies dans Object, il faut caster l'objet retourné par Class.newInstance()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void methode2(Class laClasse) {
    Object instance=laClasse.newInstance();
    instance.setVisible(true); //erreur de compil
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void methode2(Class laClasse) {
    //j'ai cru comporendre que tu instanciais des sous classes de JComponent
    JComponent instance= (JComponent) laClasse.newInstance(); 
    instance.setVisible(true); //là ca marche
    }

Discussions similaires

  1. Type de parametre int ou Classe
    Par 0redd dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 24/10/2010, 17h22
  2. [c#]comment gérer les parametres de type "ref" en réflection?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/07/2006, 11h36
  3. Réponses: 2
    Dernier message: 09/05/2006, 13h30
  4. [Débutant][Conception] Mettre à jour un objet de type classe
    Par Sylvester dans le forum Général Java
    Réponses: 19
    Dernier message: 09/02/2006, 18h59
  5. Réponses: 16
    Dernier message: 07/02/2006, 15h19

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