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 :

cast d'un objet vers des types dynamiques


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut cast d'un objet vers des types dynamiques
    bonjour,
    quand je boucle sur une liste , je veux caster l'objet vers des différents types, je veux que ca soit de maniére dynamique, par exemple obj = (Etudiant) it.next(); ou obj = (Livre) it.next();
    je récupére le nom de classe par un request.getParemeter() car je travaille sur un projet web,
    Est ce qu'il ya une méthode de faire cela

  2. #2
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut


    Ce n'est pas nécessaire, et même dangereux, de récupérer le nom de la class par getParameter(). Pour s'assurer d'obtenir le bon nom de class veux mieux faire:
    Object obj = i.next();
    String className = obj.getClass().getName();

    Je n'ai jamais tester mais essaie ca:
    Si obj est un Object File par exemple:
    File file = (className) obj;

    Mais encore la c'est risqué. Avant de faire le cast faurdait vérifier le type:
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (obj instanceof File)
        file = (className) obj;
    else if (obj instanceof Image)
        image =  (className) obj;
    [...]

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    merci pour votre aide
    C'est pas un choix de récupérer le nom de la classe par un get parameter,
    je travaille sur un générateur de code, je veux faire une page qui fait les opérations CRUD pour n'importe quelle classe
    instance of fonctionne avec des types qui sont connus d'avance
    j'ai essayé avec
    obj = (obj.getClass())it.next();mais ca n'a pas marché

    Elle va pas résoudre pas le probléme,

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Il n'existe pas de cast dynamique en java.

    Dans tous les cas connus c'est inutile.

    En effet, soit, lors de l'écriture du code, tu ne connais pas le type d'objet, seulement sa méthode ; alors tu peux passer par les techniques de reflexion ; soit, toujours lors de l'écriture du code, tu connais le nom classe, et alors tu appliques la reflexion sur le clavier azerty direct

    Si cela ne te convainc pas, peux-tu nous en dire un peu plus ?

  5. #5
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Citation Envoyé par aymen007
    j'ai essayé avec
    obj = (obj.getClass())it.next();mais ca n'a pas marché

    il faut plutot essayer comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    obj = (obj.getClass().getName())it.next();
    si non, voir la réflexion...

  6. #6
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    Bonjour,

    Ceci est impossible en JAVA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    obj = (obj.getClass().getName()) it.next();
    C'est comme si je faisais çà :
    obj = ("uneClasse") it.next();

    Voici mon mél, si quelqu'un veut une bonne classe que j'ai écrite pour faire de l'introspection : brice_colucci@hotmail.com

    J'ai codé un framework de conception d'applications graphiques JAVA pour une équipe de développement d'un laboratoire d'astrophysique travaillant avec le CNRS et j'ai beaucoup utilisé ce genre de manipulation dans un contexte de mutualisation et d'abstraction.

Discussions similaires

  1. Réponses: 21
    Dernier message: 16/09/2013, 23h00
  2. Utilisation du type dynamique des objets
    Par rocklass dans le forum Général Java
    Réponses: 2
    Dernier message: 23/02/2012, 15h34
  3. Cast d'un Objet vers qlqch
    Par polymorphisme dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/12/2009, 23h26
  4. Réponses: 3
    Dernier message: 09/01/2007, 16h27
  5. [analyse] Relations dynamiques vers des tables
    Par if_zen dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/04/2006, 18h32

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