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 :

[generics] instantier un objet


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 17
    Points : 18
    Points
    18
    Par défaut [generics] instantier un objet
    J'ai une classe du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MaClasse<T> {
         public void methode() {
                T obj;            
                ...
                traitement(obj);
         }
     
         private void traitement(T objet) {}
    }
    dans ma méthode "methode()" je voudrais instantier un objet du type T, mais je sais pas comment il faut procéder pour cela.

    j'ai essayé sans succés.

    Merci d'avance

  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 Re: [generics] instantier un objet
    Salut,


    Tu ne peux pas faire new T() car le type exact de T est perdu à l'exécution.
    Pour remédier le problème il faut utiliser l'API de reflection et un objet Class<T> qui permettra de conserver le type exact à l'exécution :

    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
     
    public class MaClasse<T> {
    	private final Class<T> type;
     
    	public MaClasse(Class<T> pType) {
    		this.type = pType;
    	}
     
    	public void methode() {
    		T obj = this.type.newInstance();            
    		...
    		traitement(obj);
    	}
     
    	private void traitement(T objet) {}
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse<String> maClasse = new MaClasse<String>(String.class);
    a++

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/06/2015, 10h40
  2. Problème d'instantiation d'objets ?
    Par ddos12 dans le forum Général Python
    Réponses: 3
    Dernier message: 07/07/2010, 19h17
  3. instantiation des objets réferencés
    Par elfive dans le forum PL/SQL
    Réponses: 10
    Dernier message: 02/06/2009, 19h11
  4. Instantiation d'objet generics
    Par laurent_m dans le forum Langage
    Réponses: 4
    Dernier message: 31/12/2008, 11h40
  5. Instantiation d'objets et stockage dans un vector
    Par webby238 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 16/04/2007, 23h16

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