2011-09-07 3 views
0

Je suis en train d'utiliser la réflexion (sur une application Android) pour appeler une méthode et il fonctionne seulement quand je le fais de cette façonAucune telle méthode Exception - utilisant la réflexion

Object impresora  = loadedClass.newInstance(); 
Object args[]  = {"00:15:0E:E0:DD:38", true}; 

for(Method m : impresora.getClass().getDeclaredMethods()) 
    if("BTConnection".compareTo(m.getName()) == 0) 
     int resultado = (Integer) m.invoke(impresora, args); 

Mais je ne veux pas pour itérer chaque fois, donc je suis en train de cette façon, mais c'est là où je reçois le NoSuchMethodException

Method m = impresora.getClass().getDeclaredMethod("BTConnection"); 
m.invoke(impresora, args); 

Merci à l'avance

+0

dans votre deuxième extrait, getDeclaredMethod prend 2 arguments et pas un, serait utile si vous incluez le code réel – momo

+0

il est mis à jour maintenant –

+0

J'ai donné ma réponse. J'espère que cela fonctionne. Vous avez besoin du paramètre afin d'essayer de trouver la méthode – momo

Répondre

0

dans votre premier extrait que vous faites object.getClass() dans votre deuxième SNI ppet vous faites impresora.getClass().

+0

désolé que c'était parce que j'essayais de le rendre plus lisible, mais maintenant je mets le code réel –

0

Vous avez besoin des types de paramètres réels afin de trouver les méthodes sinon il va essayer de chercher la méthode sans argument que je suppose ne pas exister dans votre classe.

Seeing:

Object args[] = {"00:15:0E:E0:DD:38", true};

Je suppose que le premier argument est une chaîne et second est un booléen, donc afin de trouver la méthode que vous devez effectuer les opérations suivantes:


Method m = c.getDeclaredMethod("BTConnection", String.class, Boolean.class);  
+0

J'ai essayé mais ça n'a pas fonctionné, les paramètres ne sont pas le problème parce que je essayé avec des méthodes qui n'en ont pas besoin –

+0

est-il possible pour vous de mettre en place la classe où la méthode est dans votre question afin que nous puissions l'essayer? – momo

Questions connexes