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

avec Java Discussion :

Créer dynamiquement des objets Java


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut Créer dynamiquement des objets Java
    Salut tout le monde.
    J'ai une application qui utilise une Base de Données. J'ai besoin de créer dynamiquement un objet pour chaque enregistrement de ma table.
    Par exemple, si j'ai une table Produit(codeProd, nomProd) --> chaque objet aura le nom d'une colonne de la table (ici codeProd).
    Est ce que quelqu'un a une idée comment on fait?

  2. #2
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Hello.

    À ta classe Produit, ajoute un champs "nom" que tu remplis à la lecture de la ligne.

    Non?

    A+
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Glob Voir le message
    Hello.
    À ta classe Produit, ajoute un champs "nom" que tu remplis à la lecture de la ligne.

    Non?
    A+
    En fait, Produit c'est le nom d'une table de la Base de Données et non pas d'une classe.
    Mais ma question est comment on donne un nom dynamique à un objet, c'est à dire par exemple on passe un paramètre de type String à une méthode java et à l'interieur on crée un objet qui aura le nom de ce paramètre.

  4. #4
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par choko83 Voir le message
    En fait, Produit c'est le nom d'une table de la Base de Données et non pas d'une classe.
    Mais ma question est comment on donne un nom dynamique à un objet, c'est à dire par exemple on passe un paramètre de type String à une méthode java et à l'interieur on crée un objet qui aura le nom de ce paramètre.
    Tu réponds en partie à la question ...
    Pourquoi créer un objet de type "nom" et se compliquer de beaucoup la vie et ne pas mettre une classe "Produit" avec un champ nom dont la valeur sera celle passé en paramètre ....
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  5. #5
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Je pense que pour ton problème, il te faut au préalable avoir créer tes classes. Ensuite, pour pouvoir les instancier dynamiquement, il te faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String className = "MyClass";
    MyClass m = (MyClass) Class.forName(className).newInstance();
    Si j'ai bien compris, tu auras ensuite un Objet MyClass qui aura été instancié dynamiquement. Il ne faut pas oublier d'avoir un constructeur par défaut (c'est à dire sans argument) de définit (il me semble )

    Voilà, ++
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  6. #6
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Ah ouaaaaaais comme ça aussi.

    Bon faut dire que la description du problème permet bien des interprétations...

    Maintenant je pense deviner qu'il aimerait créer des nom de variable dynamiquement d'après un texte récupéré en DB. Cela n'est pas possible en Java. Il n'y a d'ailleurs aucun problème qui nécéssiterait un tel mécanisme.
    Au pire, si tu veux vraiment associer un String à un objet, tu mets tes objets dans une Map quelconque.

    ++
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Salut,

    Je pense que pour ton problème, il te faut au préalable avoir créer tes classes. Ensuite, pour pouvoir les instancier dynamiquement, il te faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String className = "MyClass";
    MyClass m = (MyClass) Class.forName(className).newInstance();
    Merci Gueritarish pour ta réponse, mai ça revient au même pour ta solution du fait qu'il nous faut un nom dynamique pour l'objet MyClass que tu nome ici MyClass mm.
    Merci Glob pour ta réponse mais j'ai vraiment besoin de trouver une solution car c'est le seul moyen pour que mon application marche

  8. #8
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Vous vous compliquez beaucoup trop la vie. Il faut que tu modélises ta classe en fonction de ta table. Si tu as un table Produit(codeProd, nomProd) alors tu auras une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Produit {
       private String codeProd;
       private String nomProd;
    }
    Ensuite tu récupère les tuples de ta table dans une liste d'instance créées dynamiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          Map<String, Produit> myMap = new HashMap<String, Produit>();
     
          while(rs.next()) { /* Ou rs est le ResultSet de tes données */
             String codProd = rs.getString("codeProd");
             String nomProd = rs.getString("nomProd");
     
             Produit produit = new Produit(codProd, nomProd);
             myMap.put(codProd, produit);
          }
    Voila pas besoin de faire plus compliqué.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Je complique pas la vie, mais je voulais savoir si c'est possible de nommer dynamiquement un objet. La table Produit c'est un exemple que j'ai donné, mais réellement j'ai des tables plus compliquées et interconnectées par des liens sémantiques. Voila.

  10. #10
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Citation Envoyé par choko83 Voir le message
    Je complique pas la vie, mais je voulais savoir si c'est possible de nommer dynamiquement un objet. La table Produit c'est un exemple que j'ai donné, mais réellement j'ai des tables plus compliquées et interconnectées par des liens sémantiques. Voila.
    Raison de plus pour modéliser simplement. Quel est le but d'avoir des noms de variable dynamiques? L'utilisation de l'introspection est parfois justifiée, que veux-tu faire au final ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par muad'dib Voir le message
    Raison de plus pour modéliser simplement. Quel est le but d'avoir des noms de variable dynamiques? L'utilisation de l'introspection est parfois justifiée, que veux-tu faire au final ?
    Je t'explique, je dois utiliser un traitement itératif pour dessiner en 3D. Je dois créer à chaque itération un nouvel objet (qui correspond à un tuple de la Base de Données) et lui appliquer les méthodes de dessin correspondantes.
    Donc, ce n'est pas un simple passage de données de la Base de Données vers mon code Java, c'est plutôt un passage qui doit se faire dynamiquement car je peux pas prévoir à l'avance le nombre de mes objets. Voilà.

  12. #12
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Ça ne justifie toujours pas le besoin de controler le nom des variables. Je crois que tu es plus face à un problème de modélisation que de Java.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Bein, je vais voir. Je vais utiliser peut être des vecteurs puis faire des casting selon le type de mon objet.

  14. #14
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Si tu veux vraiment du dynamique, utilise un DynaBean, mais au vu de ton problème je ne vois pas où est la nécessité d'une création dynamique de classe. Une création d'objet ok, mais de classe...

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Merci Tommy31

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    J'ai enfin trouvé une solution pour mon probléme. Je suis pas obligé à chaque fois de créer un nouvel objet pour chaque enregistrement de ma table de ma Base de Données. J'utilise toujours un seul objet, mais je le réinitialise (modifie) pour chaque nouveau tuple de ma table.
    Merci beaucoup pour vos réponses.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 16/11/2011, 17h41
  2. comment utiliser des objets java avec ireport
    Par mehdiing dans le forum iReport
    Réponses: 0
    Dernier message: 28/07/2007, 23h18
  3. Réponses: 1
    Dernier message: 17/04/2007, 14h43
  4. [D5] Créer dynamiquement des variables dans une fonction
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 14/04/2007, 12h16
  5. Créer une GUI et insérer dynamiquement des objets
    Par nix74 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/11/2006, 09h04

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