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 :

Introspection et Généricité


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut Introspection et Généricité
    salut à tous,

    Je souhaite savoir si il est possible, à l'aide d'introspection, de récupérer le type générique qu'un Set infére.


    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set<Human> h = new ...;
    h.add((Toto) toto);
    h.add((Titi)titi);
    Peut on récupérer l'information human à partir de h?

    Pour ma part je pense que c'est impossible (je n'ai pas vu d'évolution dans l'api de reflexivité dans la version java 1.5) mais je serais heureux que quelqu'un vienne me contredire

    Merci d'avance pour vos réponses

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Ce n'est en effet pas possible. Tout ce qui concerne la généricité ne concerne que la phase de compilation et est perdu au Runtime.

    C'est a priori pour ne pas casser la compatibilité, même si je ne comprend pas trop pourquoi ne pas avoir rendu ces informations disponibles via de nouvelles classe/méthodes tout en conservant le fonctionnement des anciennes.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il y a deux réponses : la réponse simple est NON.

    La réflection te donne l'état de la classe et non pas d'une instance. Donc grosso-modo tu peux retrouver QUE ce qui est indiqué dans le source de la classe, mais pas lors de son utilisation.
    Ainsi par exemple avec getTypeParameters() tu peux simplement récupérer le nom des types paramétrés (E en général pour les Set) et leurs "bounds-types" c'est à dire les types de bases du paramétrage (simplement Object en général). Bref pour un HashSet ce qui se trouve dans la définition de la classe (le "bound-type" est implicite) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class HashSet<E>


    La seconde réponse est un peu plus complexe. En fait cela dépend du type exact que tu utilises dans "..." :



    Enfin, si tu as vraiment besoin de cela, le mieux serait de stocker quelque part le type précis que tu utilises...


    a++

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Merci pour les informations

    C'est bien ce que je pensais , j'en ai pas vraiment besoin

    Encore merci pour les explications

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

Discussions similaires

  1. Généricité, héritage et Reflexion/introspection
    Par K-Kaï dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2009, 14h27
  2. [architecture] pour de la généricité, vous feriez quoi ?
    Par Alec6 dans le forum Débats sur le développement - Le Best Of
    Réponses: 39
    Dernier message: 03/07/2006, 14h39
  3. introspection & généricité
    Par xixi31 dans le forum Langage
    Réponses: 5
    Dernier message: 02/02/2006, 11h10
  4. fonction de tri par introspection
    Par ned-flanders dans le forum C++
    Réponses: 7
    Dernier message: 21/10/2004, 11h49
  5. [JNDI] [LDAP] [DirContext] [LdapContext] DN / introspection
    Par wazup dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/04/2004, 15h16

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