我正在尝试使用反射(在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);
提前致谢
答案 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);