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 :

Types paramétrés java


Sujet :

Langage Java

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut Types paramétrés java
    Bonjour à tous,
    Voilà je vous expose mon problème, en fait je possède une application qui présente des redondances de méthodes. Pour remédier à celà j'ai créé une classe abstraite avec des types paramétrés.
    La signature de ma classe est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract class AbstractBaseModBusinessHandler<T extends SormDataObject, D extends IBaseDao<T>> implements IBaseModBusinessHandler<T> {
    Dans cette classe je possède une méthode qui exécute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T newDataObject  = (T) new T().getDataObjectMeta().createNew();
    Le problème est qu'il n'est pas possible d'instancier le type T étant donné que sa classe n'est pas connue à priori.

    Auriez-vous une solution qui permette de remédier à se problème?
    Merci d'avance.

    Arno

  2. #2
    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 faut que tu récupère le type de la classe en paramètre, puis utiliser la méthode newInstance().

    Par exemple :
    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
    public abstract class AbstractBaseModBusinessHandler<T extends SormDataObject, D extends IBaseDao<T>> implements IBaseModBusinessHandler<T> {
     
    	private final Class<T> type;
     
    	AbstractBaseModBusinessHandler(Class<T> type) {
    		this.type = type;
    	}
     
    	private T newInstance() {
    		try {
    			return this.type.newInstance();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    }
    a++

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Par défaut
    Merci beaucoup pour ta réponse , je vais regardé tout ça.

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

Discussions similaires

  1. [Collection] type paramétré
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2006, 11h03
  2. comment gerer les types Objet(java)
    Par karray_ali dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/05/2006, 23h27
  3. [Servlet] Récupération du Content-type en Java
    Par hdd dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/02/2006, 16h38
  4. [JAVA et XML] Message XML avec paramètre JAVA
    Par MiJack dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 09/11/2005, 10h22
  5. [Débutant] The authentication type 5, java
    Par agougeon dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 07/05/2005, 14h01

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