Нет такого исключения метода - используя отражение - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь использовать отражение (в приложении для Android) для вызова метода, и он работает только тогда, когда я делаю это таким образом

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);

Но я не хочу повторять каждый раз, поэтомуЯ пытаюсь таким образом, но здесь я получаю NoSuchMethodException

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

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 07 сентября 2011

Вам нужны фактические типы параметров, чтобы найти методы, иначе он попытается найти метод без аргумента, который, как я предполагаю, не существует в вашем классе.

Зрение:

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

Я предполагаю, что первый аргумент является строкой, а второй - логическим, поэтому, чтобы найти метод, вам нужно сделать следующее:


Method m = c.getDeclaredMethod("BTConnection", String.class, Boolean.class);    
0 голосов
/ 07 сентября 2011

В вашем первом фрагменте вы делаете object.getClass() во втором фрагменте, который вы делаете impresora.getClass().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...