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 :

probleme avec la classe class


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Par défaut probleme avec la classe class
    Bonjour,
    J'ai essayé d'executer un constructeur d'une classe dans la methode main d'une autre classe en utilisant la classe class et les notions de la reflexivité mais le probleme est lorsque je compile ma classe main j'ai pas d'erreur mais sans avoir de resultat..s'il vous plait aidez moi (sachant que je dois le faire en utilisant la classe "class" et ses methodes). voici les 2 classes que j'ai fait et merci d'avance pour l'aide:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    //****la premiere classe bonjour*********
    package pac;
     
    public class bonjour {
    	public  bonjour (String chaine )
    	{
    		System.out.println("bonjour");
    		System.out.println(chaine);
    	}
    }
     
     
    //******la classe main*****************
     
     
    package pac;
     
    public class principal {
    	public static void main(String[]args)
    	{String msg=" bon";
    		try
        {
            // Récupération de la classe bonjour
          Class classe = Class.forName ("pac.bonjour");
            // Récupération du constructeur prenant en paramètre une chaîne de caractères
          java.lang.reflect.Constructor constructeur = 
          classe.getConstructor (new Class [] {Class.forName ("pac.bonjour")});
          constructeur.newInstance (new Object [] {msg});
     
          }
          catch (ClassNotFoundException e)
          {
            // La classe n'existe pas
          }
          catch (NoSuchMethodException e)
          {
            // La classe n'a pas le constructeur recherché
          }
          catch (InstantiationException e)
          {
            // La classe est abstract ou est une interface
          }
          catch (IllegalAccessException e)
          {
            // La classe n'est pas accessible
          }
          catch (java.lang.reflect.InvocationTargetException e)
          {
            // Exception déclenchée si le constructeur invoqué
            // a lui-même déclenché une exception
          }
          catch (IllegalArgumentException e)
          {
            // Mauvais type de paramètre
            // (Pas obligatoire d'intercepter IllegalArgumentException)
          }
     
          }
     
    }

  2. #2
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Hello!

    Heu, tu n'a rien mis dans tes clauses catch, forcément qu'il n'y aura pas d'erreur.
    Commence déjà par ajouter l'instruction suivante dans chacune des clauses catch.

    Ne jamais museler une Exception.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Par défaut
    j'ai ajouté ces exceptions mais le probleme est toujours present...en plus maintenant il m'affiche no such exception methods

  4. #4
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Peux-tu coller la stacktrace de l'exception s'il te plaît?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Par défaut
    voici le message que je reçoie:

    java.lang.NoSuchMethodException: pac.bonjour.<init>(pac.bonjour)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at pac.principal.main(principal.java:11)

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Me revoilou!

    Alors, ton problème vient de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    classe.getConstructor (new Class [] {Class.forName ("pac.bonjour")});
    En fait la méthode getConstructor de la classe Class permet de récupérer le constructeur d'une classe en passant en paramètre, non pas la classe dont on veut le constructeur mais la signature du constructeur que l'on veut.

    Pour être plus clair, tu as défini un constructeur dans ta classe bonjour prenant en paramètre un String, c'est donc le type String que tu dois passer en paramètre de la méthode getConstructor.

    Tu fais ça quoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.reflect.Constructor constructeur = classe
    					.getConstructor(new Class[] { String.class });
    J'ajouterai pour terminer qu'en Java il y a une convention qui dit que le nom des classe devrait en principe commencer par une majuscule (renomme bonjour en Bonjour et principal en Principal).

    PS : si mon explication n'est pas clair, n'hésite pas à me le dire.

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Par défaut
    ben voila ce que je reçoie maintenant...


    java.lang.NoSuchMethodException: pac.bonjour.<init>(pac.bonjour)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at pac.principal.main(principal.java:11)

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

Discussions similaires

  1. ArrayList<Class> class class.setString()
    Par Onelove dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2014, 19h42
  2. Probleme avec les fichiers .class
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2007, 11h49
  3. [Prototype] Prototype Window Class
    Par titou250 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 05/07/2006, 18h15
  4. probleme avec la classe calendar
    Par fatmax dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2005, 17h04
  5. Réponses: 13
    Dernier message: 02/02/2005, 00h21

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