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 :

Création dynamique d'objets


Sujet :

Langage Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Création dynamique d'objets
    Bonjour
    Est ce qu'il est possible de créer dynamiquement des objets (attributs + méthodes) sans avoir à l'avance ecrit.
    Je veux dire par cela si c possible à l'exécution de définir une nouvelle classe, les attributs et les méthodes qu'elle contient, et d'instancier un objet de cette classe.
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Oui, par exemple avec CGLIB, mais tu as interêt à bien maitriser tous les concepts de Java avant de te lancer là dedans.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Puisque c'est possible, comment peut-on faire ???
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Tu peux aussi générer le byte code à la volée, et utiliser les methodes ClassLoader.defineClass(), en redefinissant ton ClassLoader.

    Mais franchement, si tu debutes (ou si tu comprends rien a ce que j'ai ecrit), tu devrais changer d'approche.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Je vois pas à quoi cela te sert de créer une méthode dynamiquement, il te faut au moins connaitre son nom et ses arguments. Idem pour le constructeur (ou bien avoir déjà une instance de ce constructeur)

    Si cela te vas voici un exemple

    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
     
    //Pour instancier une classe dont le nom est contenu dans une chaine de caractère 
    String className = "NomDeMaClasse";
     
    //Pour instancier la classe, il faut au moins connaitre les agument du construteur et ses valeurs
    Class [] typeParmOfConstructor = new Class[2];
    Object [] valParamOfConstructor = new Object[2];
     
    typeParmOfConstructor[0] = String.class;
    valParamOfConstructor[0] = "ValParam1";
     
    typeParmOfConstructor[1] = Integer.class;
    valParamOfConstructor[1] = new Integer(5);
     
    //Instanciation qu'il faut catché bien sur
    Class classe = Class.forName(className);
    Constructor constructFeuille = classe.getConstructor(typeParmOfConstructor);
    Object myClass = constructFeuille.newInstance(valParamOfConstructor);
     
    //Pour appeler une méthode de la classe que tu vien de créer il faut connaitre son nom
    String methodeName = "nomDeMaMethode";
     
    //Ensuite il faut connaitre aussi le type de ses arguments et leurs valeurs (ici on va dire qu'il n'y a pas d'argument)
    Class [] typeParmOfMethode = new Class[0];
    Object [] valParamOfMethode = new Object[0]; 
     
    //Instanciation qu'il faut catché bien sur
    Method methode = myClass.getClass().getMethod(methodeName, typeParmOfMethode);
    Object methodeValReturn = methode.invoke(myClass, valParamOfMethode);

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. [C#] Création dynamique d'objets
    Par Gloups dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/08/2006, 01h52
  3. Création dynamique d'objets ?
    Par Arthur A. dans le forum C++
    Réponses: 6
    Dernier message: 15/06/2005, 23h55
  4. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 16h07
  5. [Reflexivite]création dynamique d'objet et Héritage
    Par norkius dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 26/10/2004, 11h37

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