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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    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 expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    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 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
    Il ne faut pas employer class laClasse, mais plutot :

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

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    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 expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    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
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    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 ?

  7. #7
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    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?

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    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

  9. #9
    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 : 42
    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
    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){...}
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

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, 16h22
  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, 10h36
  3. Réponses: 2
    Dernier message: 09/05/2006, 12h30
  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, 17h59
  5. Réponses: 16
    Dernier message: 07/02/2006, 14h19

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