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 :

Problème avec la réfléxivité getMethod(setter, paramType)


Sujet :

Java

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut Problème avec la réfléxivité getMethod(setter, paramType)
    Bonjour à tous,

    J'ai ajouté la classe ReflectUtils provenant de la source:
    http://www.java2s.com/Code/Java/Refl...rytocallit.htm

    Le problème se situe dans la méthode findMethod(Object obj, String property, Object value)

    Si j'ai un champ de type boolean, il me renvoi une méthode null!

    J'ai mis print dans la console:
    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
           while (paramType != null) {
                System.out.println("param type:"+paramType+"|setter:"+setter);
                try {
                    m = theClass.getMethod(setter, paramType);
                    return m;
                } catch (NoSuchMethodException ex) {
                    // try on the interfaces of this class
                    for (Class iface : paramType.getInterfaces()) {
                        try {
                            m = theClass.getMethod(setter, iface);
                            return m;
                        } catch (NoSuchMethodException ex1) {
                        }
                    }
                    paramType = paramType.getSuperclass();
                }
            }
            return m;
    Voilà ce que me retourne la console:
    param type:class java.lang.Boolean|setter:setConnection_bdd

    Dans mon objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private boolean connection_bdd=false;
    public void setConnection_bdd(boolean connection_bdd) {
    		this.connection_bdd = connection_bdd;
    	}
    J'ai d'autres boolean dans la classe et j'ai les mêmes problèmes
    Je n'ai pas trouvé d'ou pouvait venir le problème?

    Merci pour votre aide!

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    J'ai résolu mon problème,
    Cela venait de certaines class qui ne correspondent pas, pour corriger, j'ai utiliser des maps:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	private static Map<Class,Class> primitiveMap = new HashMap<Class,Class>();
    	static {
    		primitiveMap.put(Boolean.class, boolean.class);
    		primitiveMap.put(Byte.class, byte.class);
        		primitiveMap.put(Character.class, char.class);
        		primitiveMap.put(Short.class, short.class);
        		primitiveMap.put(Integer.class, int.class);
        		primitiveMap.put(Long.class, long.class);
        		primitiveMap.put(Float.class, float.class);
        		primitiveMap.put(Double.class, double.class);
    	}
    Si vous en connaissez d'autres, merci de poster

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je ne vois pas bien l'intérêt de cette Map. Si le paramètre est un type primitif, il suffit de passer directement la Class correspondant à ce type primitif, au lieu de faire des associations.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci pour ta réponse thelvin,

    Par curiosité, comment aurais tu fais? Quelle méthode permet de faire le lien?
    Quelle solution concrète me proposes tu?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je ne sais pas quoi te dire. Si tu veux appeler une méthode qui serait déclarée ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int makeTruc(int machin) {
    Tu t'y prendrais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Method method = theClass.getMethod("makeTruc", int.class);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Reflexivité] problème avec getMethod
    Par Ceubex dans le forum Langage
    Réponses: 4
    Dernier message: 01/12/2010, 08h47
  2. Problème avec mon setter
    Par -={-_-}=- dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 03/06/2008, 10h20
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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