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 :

problème avec une classe générique


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut problème avec une classe générique
    Bonjour,

    j'ai créé une classe générique : ListeDataTable<T> dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class ListeDataTable<T> implements InterfaceListeDataTable<T> {
     
    	private List<T> liste;
     
     
     
    	public void creer(String nom) {
    		...	
    	}
    J'aimerai savoir quel est le Type de T : String, Integer ... dans la méthode creer, mais je ne sais pas comment faire, parce que je voudrais faire :

    Mais ça, on n'a pas le droit, ça ne marche pas, du coup j'aimerai trouvé une solution afin de trouver le type de T.

    Si quelqu'un à une idée, je suis preneur

    Merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ce n'est pas possible car le type paramétré est perdu à l'exécution.

    La solution consiste à se trimballer le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class ListeDataTable<T> implements InterfaceListeDataTable<T> {
     
    	private List<T> liste;
    	private final Class<T> type;
     
    	public ListeDataTable(Class<T> type) {
    		this.type = type;
    	}
     
    	private T newInstance() {
    		try {
    			return this.type.newInstance();
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		}
    	}
     
    }
    a++

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    Merci pour ta réponse

    Mais le problème c'est que cette classe est étendu, c'est à dire que j'ai MaClasse extends ListeDataTable<Famille> par exemple, du coup, je ne peux pas appeler le constructeur qui a pour paramètre Class<T> type, sauf s'il faut que dans le constructeur de la classe MaClasse, j'appelle le constructeur ListeDatatTable(Famille f)

    Comment puis résoudre ce problème ?

    Merci

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Comme je l'ai dit tu dois te trimballer le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MaClasse<T> extends ListeDataTable<T> {
     
    	public MaClasse (Class<T> type) {
    		super(type);
    	}
    }
    Ou si la sous-classe n'est pas paramétré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MaClasse extends ListeDataTable<MonType> {
     
    	public MaClasse () {
    		super(MonType.class);
    	}
    }
    a++

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    Merci beaucoup

    Mon problème est résolu

    Encore merci

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

Discussions similaires

  1. Problème avec une classe
    Par kanabzh29 dans le forum Langage
    Réponses: 14
    Dernier message: 31/10/2008, 06h41
  2. [POO] Problème avec une classe + requêtes sql
    Par mithrendil dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 08h27
  3. Problème avec une classe générique
    Par Core8 dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2007, 03h18
  4. Problème avec une classe ActionScript
    Par Patryk403 dans le forum Flash
    Réponses: 3
    Dernier message: 06/08/2006, 12h42
  5. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00

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