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

API standards et tierces Java Discussion :

[Reflexivite]création dynamique d'objet et Héritage


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut [Reflexivite]création dynamique d'objet et Héritage
    Bonjour,

    J'utilise le code suivant pour créer une instance dynamiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Constructor constructeur =entity.getConstructor(classDesArgs);
              System.out.println("CONSTRUCTEUR = " + constructeur.toString() );
              object = constructeur.newInstance(lesArgs);
    Ou "classDesargs" est mon tableau de Class issu du tableau d'objets "lesArgs".
    mon problème est que mon constructeur prend en paramètre une classe abstraite mère. Or moi dans mon tableau "classDesArgs" c'est un objet de type Classe fille de cette classe abstraite que je donne. Du coup à l'éxécution j'ai une erreur de type NoSuchMethodException.

    Pour être plus claire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MonConstructeur( MaClasseMere a)
    args={ClasseFille classeFilleObject}
    classDesArgs{classFilleObject.class}
    Est ce qu'il existe un moyen de gérer l'héritage dans la création d'objets dynamique?

    En espérant avoir été a peu près claire...
    Merci
    [ Modéré par vedaer ]
    -> Ajout du tag dans le titre
    [ Merci de respecter les Règles du Forum ]

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Je crois que je n'ai rien compris.
    Pourquoi tu veux faire ça au fait? Ca m'a l'air bien compliqué pour pas grand chose en fait.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Pourquoi je veux faire ça est une bien longue histoire ;-)
    Il se trouve que dans mon application je travaille beaucoup avec des classes abstraites et de l'héritage...
    Et ici je cherche à créer une instance d'un objet à partir d'une liste d'objets que je connais (c'est la seule chose que je connaisse d'ailleurs...) et qui correspondent à ma liste d'arguments pour construire cette instance. Pour chaque élément du tableau je fais donc un .getclass() qui me donne donc un tableau de Class qui doit me servir à récupérer mon constructeur.
    Le problème ici est que ce tableau contient un paramètre de type ClassFille or mon constructeur prend en paramètre sa classe mère abstraite...

    Si j'utilise classeFilleObject.getSuperClass() ça doit marcher mais je ne peux pas appliquer ça à chacun de mes paramètres (un String par exemple...)
    J'ai pensé aussi à créer un constructeur différent pour chaque classe fille mais ça accroit considérablement le nombre de constructeurs possibles, c'est pour cela que je cherche une solution plus "propre"

    Je ne sais pas si je suis plus claire mais je ne sais pas quel point il faut que j'éclaircisse ??

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    A première vue il faut que tu donnes la classe paramètre déclarée pour le constructeur, à classDesArgs ; tu arriveras à quelque chose comme :
    MonConstructeur( MaClasseMere a)
    args={ClasseFille classeFilleObject}
    classDesArgs{classMèreAbstraiteObject.class}

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Oui cette dernière solution marche mais cela m'oblige à savoir d'avance pour quels paramètres j'ai besoin d'appeler la classe mère abstraite...

    Tant pis je vais essayer de faire avec !

    J'avais espoir que le méthode getConstructor(Class[]) soit capable de gérer cette notion d'héritage mais manifestement il faut lui donner le .class qui correspond exactement au paramètre du constructeur et on ne peut pas lui passer le .class d'une classe fille...

    Merci !

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    Je me suis déjà heurté à ce problème, et il a fallu que je fasse une routine d'analyse des constructeurs par rapport aux paramètres que je voulais y donner... Un peu prise de tête comme algo, mais ça passe 8) Bon courage.

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

Discussions similaires

  1. [GLScene] Création dynamique d'objet
    Par Matt2094 dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2010, 13h28
  2. Création dynamique d'objets
    Par Ensias dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2007, 21h48
  3. [C#] Création dynamique d'objets
    Par Gloups dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/08/2006, 01h52
  4. Création dynamique d'objets ?
    Par Arthur A. dans le forum C++
    Réponses: 6
    Dernier message: 15/06/2005, 23h55
  5. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 16h07

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