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 :

invoke sur un objet null


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Par défaut 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
     
    tatic 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);
    				}
    			}
    		}
    	}
    L'exception
    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)

    Merci d'avance pour les réponse !

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Il y a bien des chances que dans ton formulaire il y ait getters/setters qui prennent en argument des types primitifs (int, boolean ?). De ce fait, null n'est pas une valeur acceptable

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Il y a bien des chances que dans ton formulaire il y ait getters/setters qui prennent en argument des types primitifs (int, boolean ?). De ce fait, null n'est pas une valeur acceptable
    donc tu proposes quoi comme solution !? sachant que le but est de faire des appels dynamiques

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Dynamique ou pas, ça ne change rien au problème.

    Si tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public void setEntier(int i) {
        entier = i;
    }
    et que tu appelles :
    ça ne marchera pas mieux.

    En dynamique tu reportes juste le problème à l'exécution au lieu de la compilation.

    Si tu veux pouvoir passer nullutilises le type Integer si ça a du sens...

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Si tu ne veux ni :
    - changer ton formulaire pour y mettre des objets (Integer, Boolean)
    - accepter qu'il ne faut pas essayer de mettre null dans certaines valeurs du formulaire,

    il va falloir que tu checkes le type d'arrivée, et que tu fasses un null-safing en précisant une valeur par défaut ...

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Par défaut
    c'est parti pour un null-safing pour le moment !
    Après j'ai tout le week pour trouver un autre moyen !
    Merci à vous tous !

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Citation Envoyé par nounou0018 Voir le message
    c'est parti pour un null-safing pour le moment !
    Les valeurs par défaut ça part souvent d'un bon sentiment, mais à mon très humble avis c'est à éviter autant que possible.

    Par exemple quand je vois des dates du style '31-12-2999' ou des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (i == Interger.MIN_VALUE) { ... }
    qui fleurissent au quatre coins d'un code ça me rend très très triste

    Évidemment il n'y à que des cas particuliers et je ne connais pas le tien

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. La méthode invoke sur un objet null
    Par nounou0018 dans le forum Général Java
    Réponses: 3
    Dernier message: 17/06/2011, 18h38
  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. [debutant] Contraintes d'intégrité définies sur un objet
    Par maysa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/05/2004, 14h57
  5. Requêtes : recherche de maxi sur plusieur Objet
    Par pertuis dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/03/2004, 15h28

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