我尝试使用Method调用函数。问题是下面的代码没有执行。我试着搜索,结果一样。有人可以说明为什么它不起作用吗?我曾尝试过一些日志,直到method.invoke函数都达到了。以下代码没有抛出异常。
public String customSearchedParams() throws Exception
{
Class<?> dynamicObj = Class.forName(this.className);
Constructor<?> constructor = dynamicObj.getConstructor(long.class, long.class, long.class, long.class);
Object obj = constructor.newInstance(this.startTime, this.time, this.t1, this.t2);
Method method = dynamicObj.getMethod("getCustomSearch", new Class[]{long.class, long.class, long.class, long.class, long.class});
this.data = (String) method.invoke(obj, new Object[]{this.startTime, this.time, this.t1, this.t2, this.paramIDs});
return "SUCCESS";
}
构造
public Traffic(long startTime, long endTime, long t1, long t2){
// Assign to local variables
}
getCustomSearch:
public String getCustomSearch(long startTime, long endTime, long t1, long t2, long paramIDs) throws Exception {
// do DB calls --> return JSONArray as String
}
答案 0 :(得分:2)
Class.getMethod()
收到一个可变长度的参数。您应该将类作为单独的参数传递,而不是转换为数组。与invoke()
Method method = dynamicObj.getMethod("getCustomSearch", long.class, long.class, long.class, long.class, long.class);
this.data = (String) method.invoke(obj, this.startTime, this.time, this.t1, this.t2, this.paramIDs);
答案 1 :(得分:0)
感谢所有帮助过我的人。我发布的代码正在运行,我已经将paramID声明为String并且我试图传递它的时间很长。这就是为什么method.invoke没有执行。