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 :

Casting en dynamique


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut Casting en dynamique
    Bonjour, je recode mon application de php vers java.

    aujourd'hui je peux faire un truc du genre :

    $nom_de_la_classe = "maClasse";
    $objet = new $nom_de_la_classe ();

    Je sais qu'il existe la méthode forName pour créer des objets à partir du nom de la classe.

    Malgré cela je n'arrive pas à coder ceci :

    J'ai des objets stockés dans une base de données avec un champs qui reprend le nom de la classe de l'objet.

    Quand je charge de la base de donnée mon objet je ne sais pas comment faire pour le créer à partir du nom stocké en base.

    Je suis obligé de faire un truc du genre :

    Object mon_objet = Class.forName .....

    Je ne peux pas faire ceci :

    nom_de_la_classe_en_BDD mon_objet = Class.forName
    ou encore
    nom_de_la_classe_en_BDD mon_objet = (nom_de_la_classe_en_BDD)ObjetParent;

    ou ObjetParent est un objet standard d'ou découlent toutes les classes filles comme nom_de_la_classe_en_BDD.


    Je veux de typer l'objet avec une chaine de caractère.
    Une solution du type :

    String nom_de_la_classe = "maClasse";
    nom_de_la_classe_en_BDD mon_objet = Class.forName (nom_de_la_classe ).newInstance ()


    Voila ce que je cherche.

    Enfin je suis un peu perdu.

    Merci pour votre aide !

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Si tu connaissais le type de ton objet, tu n'aurais pas besoin de passer par forName().
    La seule chose que tu peux faire, si tu es sûr que toutes tes classes dérivent de ObjetParent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String nom_de_la_classe = "maClasse";
    ObjetParent mon_objet = (ObjetParent) Class.forName(nom_de_la_classe ).newInstance ();

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut Merci
    Oui c'est une solution que j'avais explorée, le problème est que l'objet parent le possède pas le même constructeur que les fils. Il faut donc que j'appel le constructeur du fils et non du père.

    Voici une piste mais je sais pas encore si elle peut me mener quelque part.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class classe = Class.forName("nom_de_la_classe");
    			Constructor[] constructeurs = classe.getDeclaredConstructors();
    			Object[] params = {"1411",null,false,true};
    			Object obj = constructeurs[0].newInstance(params);
    Car pour cette solution le forName nécessite le nom complet de la classe du type java.lang.String alors que dans ma base de donnée je stocke le nom court de la classe et non le nom complet ici le nom court est "String".

    Enfin voila. Si vous avez d'autres pistes ou une suite allant dans le sens de ma piste.

    Merci d'avance.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par etherny Voir le message
    Oui c'est une solution que j'avais explorée, le problème est que l'objet parent le possède pas le même constructeur que les fils. Il faut donc que j'appel le constructeur du fils et non du père.
    Ben oui, tu appelle le newInstance sur le bon objet Constructor de la classe fils, en luis passant les paramètres.

Discussions similaires

  1. cast d'un objet vers des types dynamiques
    Par aymen007 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 25/06/2008, 09h31
  2. Casting Dynamique et l'inserer dans jComboBox ?
    Par ExSter dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/06/2007, 03h26
  3. Polymorphisme et cast dynamique
    Par vcoulon dans le forum C++
    Réponses: 16
    Dernier message: 21/03/2007, 14h03
  4. Cast dynamique d'un objet ?
    Par elitost dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2006, 10h43
  5. [DP][héritage]sous-casting dynamique
    Par Le prophete dans le forum Général Java
    Réponses: 4
    Dernier message: 20/08/2004, 11h56

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