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 :

Passer un type de classe en paramètre


Sujet :

Langage Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Passer un type de classe en paramètre
    Bonjour,

    Voici la méthode suivante :

    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
    19
    20
    @SuppressWarnings("unchecked")
        public List<IBase> readAll() throws Exception {
            Session session = HibernateUtil.getNewSession();
    
            List<IBase> result = new ArrayList<IBase>();
    
            Criteria criteria = Criteria criteria = session.createCriteria(BaseOrganisme.class);
    
            List<IBase> list = criteria.list();
    
            if (list.size() > 0) {
                Iterator<IBase> it = list.iterator();
                while (it.hasNext()) {
                    result.add(it.next());
                }
            }
    
            return result;
        }
    J'ai besoin de la rendre factorisable pour qu'elle puisse être appelée par des classes de types différents, donc je fait cela :

    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
    19
    20
    @SuppressWarnings("unchecked")
        public List<IBase> readAll(String nomClasse) throws Exception {
            Session session = HibernateUtil.getNewSession();
    
            List<IBase> result = new ArrayList<IBase>();
    
            Criteria criteria = session.createCriteria(Class.forName(nomClasse));
    
            List<IBase> list = criteria.list();
    
            if (list.size() > 0) {
                Iterator<IBase> it = list.iterator();
                while (it.hasNext()) {
                    result.add(it.next());
                }
            }
    
            return result;
        }
    ... mais ce code renvoi l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.ClassNotFoundException: BaseOrganisme
    ...
    Comment passer le type de la classe en paramètre comme BaseOrganisme.class ?

    Merci.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  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,


    Il faut utiliser le nom complet, c'est à dire en incluant le package...

    Sinon pourquoi ne pas utiliser un paramètre de type Class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<IBase> readAll(Class<?> type) throws Exception {
    a++

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria criteria = session.createCriteria(BaseOrganisme.class);
    Donne la signature suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Criteria createCriteria(Class<T> clazz);
    Cordialement,
    Patrick Kolodziejczk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Bonjour et merci pour vos réponses. +1

    Cela fonctionne avec la signature de méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public <ObjetMetier extends IObjetMetier> List<ObjetMetier> readAll (Class<ObjetMetier> classeMetier) throws Exception { ... }
    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

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

Discussions similaires

  1. [XE2]Type de classe en paramètre de fonction
    Par Papy214 dans le forum Langage
    Réponses: 5
    Dernier message: 09/05/2012, 11h21
  2. Choisir un type de classe en paramètre
    Par Kaneda Shotaro dans le forum C#
    Réponses: 2
    Dernier message: 27/06/2011, 12h13
  3. Passer une variable de classe en paramètre d'un menu
    Par Xaziou dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 11/05/2011, 16h30
  4. Passer un type en paramètres de procédure
    Par Papy214 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 12/04/2008, 19h41
  5. Passer une classe en paramètre
    Par Tex-Twil dans le forum C++
    Réponses: 17
    Dernier message: 30/11/2005, 20h00

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