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 :

La méthode invoke sur un objet null


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Points : 25
    Points
    25
    Par défaut La méthode invoke sur un objet null
    Bonsoir,

    je suis entrain de coder une fonction qui permet d'utiliser les setters d'une classe dynamiquement !
    Ainsi je suis obligé de passé par la fonction invoke de la classe Method, sauf quand je la lance avec des paramètre null, j'ai une exception .

    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
    21
    22
    23
    24
    25
     
    	static void modifyAttribute(Object form,String param, Object newValue ) {
     
    		Method[] m = form.getClass().getDeclaredMethods();
     
    		String methodName = null;
    		if(param.length()>=1)
    			methodName = "set"+param.toUpperCase().charAt(0)+param.substring(1, param.length());
     
    		for (int i = 0; i < m.length; ++i) {
     
    			if(m[i].getName().equals(methodName))
    			{
    					Object[] arguments = new Object[] {newValue};
     
    				try {
    					m[i].invoke(form,arguments);
    				} catch (IllegalAccessException e) {
    					System.out.println(e);
    				} catch (InvocationTargetException e) {
    					System.out.println(e);
    				}
    			}
    		}
    	}
    STOUT !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at DynamicForm.modifyAttribute(DynamicForm.java:43)
    	at DynamicForm.main(DynamicForm.java:93)

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Pourquoi créer le topic à deux endroits ? Ici et .
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Pourquoi créer le topic à deux endroits ? Ici et .
    dsl j'ai pas fais attention !
    Sinon une réponse à ma question !!?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    A tout hasard, est-ce que tu n'aurais pas surchargé ton setter ?

    Tu peux essayer ceci qui devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    static void modifyAttribute(Object form,String param, Object newValue ) {
        String name = "set"+param.toUpperCase().charAt(0)+param.substring(1, param.length());
        Method m = form.getClass().getMethod(name, newValue.getClass());
        m.invoke(form, newValue);
    }

Discussions similaires

  1. Gestion des erreurs sur les objets null
    Par erox44 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 12/07/2011, 12h10
  2. invoke sur un objet null
    Par nounou0018 dans le forum Langage
    Réponses: 6
    Dernier message: 17/06/2011, 18h01
  3. JSP et Java beans: methode sur un objet null
    Par steeve93800 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/11/2009, 10h27
  4. Réponses: 7
    Dernier message: 30/08/2007, 14h17
  5. Réponses: 8
    Dernier message: 19/06/2006, 15h31

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