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

Java Discussion :

Génériques. Connaitre le type supporté


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Génériques. Connaitre le type supporté
    Bonjour,

    Je me suis crée un objet générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Group<T> implements Comparable<Group<T>>, Serializable {
     
    	/** Serial version UID */
    	private static final long serialVersionUID = 741587360128392267L;
     
    	T holded;		
     
    	private String name;
    	private String description;
    	private List<T> items;	
     
            // Constructeurs et accesseurs ...
    }
    Mais je voudrais pouvoir donner à mon attribut 'holded' la classe de l'objet supporte (le type de T). Je voudrais faire cela sans avoir à le recevoir dans le constructeur.
    Est-ce possible ?

    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je n'ai pas très bien compris ta question.
    Tu veux restreindre le type T ?
    Tu peux obliger le type T à dériver d'une classe, lors de la déclaration.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class<T> type = (Class<T>) ((ParameterizedType) getClass()
    				.getGenericSuperclass()).getActualTypeArguments()[0];
    @+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Super grand merci djo.mos.

    Sauf que j'ai une ClassCastException .. :'(
    java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
    Dernière modification par Invité ; 20/02/2008 à 16h36.

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Surement un problème de parenthèses. Tu as essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (ParameterizedType)( getClass().getGenericSuperclass() )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    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,


    Le ClassCastException est normal... puisque rien ne garantit que le retour soit un ParameterizedType...


    Que veux-tu faire exactement ? Obtenir le type paramétré ? ce n'est pas possible !


    Un peu de lecture : Les Generics ne sont pas des Templates comme les autres !


    a++

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

Discussions similaires

  1. [FTP] Connaitre le type mime d'un fichier
    Par jak0 dans le forum Langage
    Réponses: 15
    Dernier message: 18/07/2006, 11h32
  2. [CSS][formulaire] connaitre le type d'un champ input
    Par psychomatt dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 22/09/2005, 12h13
  3. Connaitre le type de character set
    Par vbcasimir dans le forum Administration système
    Réponses: 4
    Dernier message: 02/08/2005, 13h02
  4. Réponses: 10
    Dernier message: 27/04/2005, 11h26
  5. Connaitre le type de chaque col d'une table Paradox
    Par mjp dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/02/2005, 21h00

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