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 :

référence à un objet générique


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut référence à un objet générique
    Bonjour,


    je code actuellement des DAO . Il y en a un bon paquets et j'essaie de réduire le nombre de code en utilisant des "generic".

    Pour l'instant, j'ai les déclarations de ce style:
    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 ActionDaoImpl implementsActionIntDao,Serializable,GenericIntDao<Action> { 
     
     
    	@Override
    	public ArrayList<Action> findAll() {
     
    		String sql = "SELECT * FROM action";
     
    		return (ArrayList<Action>) jdbcTemplate.queryForList(sql, new Object[] {}, Action.class);
    	}
     
     
    }

    Que je souhaiterais remplacer par quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class DaoImpl<T> implements Serializable,GenericIntDao<T> { 
     
    }

    J'ai deux problèmes:

    1) la méthode "findAll" (et d'autres) contient une référence à la classe "Action".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jdbcTemplate.queryForList(sql, new Object[] {}, Action.class)
    je n'arrive pas à substituer Action.class par une référence à la classe générique <T>


    2) les requêtes SQL contiennent le nom de la table qui est le même qu'une pojo, ici, classe "Action" et table action.

    Est-il possible d'extraire ce nom sous forme de String de la classe générique <T>?



    merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pour les deux problèmes, c'est impossible, et la solution est la même.

    Tu dois demander, dans le constructeur de ton DAOImpl, un objet de type Class<T>, et le garder.
    Après, tu n'as plus qu'à t'en servir quand on te demande une Class, ou pour obtenir son nom.

    Grosso-modo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class DaoImpl<T> implements Serializable,GenericIntDao<T> {
      private final Class<T> type;
     
      DaoImpl(Class<T> type) {
        this.type = type;
      }
     
      String getClassName() {
        return type.getSimpleName();
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    merci thelvin, cela colle avec ce que je voulais.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/07/2006, 17h27
  2. [VB6] faire référence à un objet situé sur un autre form
    Par coyott dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/05/2006, 15h13
  3. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44
  4. taille d'objet générique
    Par Heimdall dans le forum C
    Réponses: 7
    Dernier message: 01/07/2004, 18h00

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