没有这样的方法例外 - 使用反射

时间:2011-09-07 00:31:12

标签: android exception reflection

我正在尝试使用反射(在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 :(得分:0)

在您的第一个代码段中,您正在执行object.getClass()正在执行的impresora.getClass()

答案 1 :(得分:0)

你需要实际的参数类型才能找到方法,否则它会尝试查找没有参数的方法,我猜你的类中不存在。

看到:

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

我猜第一个参数是String,第二个是boolean,所以为了找到你需要做的方法:


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