终于解决了这个陈年老问题了:
报错信息如下:
No signature of method: mm.jihe.utils.NotifyService.sendRegularIssueEmail() is applicable for argument types: (java.util.ArrayList, [Ljava.lang.Object;, java.util.ArrayList) values: [[
[mm.jihe.pm.Issue: 882, mm.jihe.pm.MendPlan: 99590, null],
[mm.jihe.pm.Issue: 479, mm.jihe.pm.MendPlan: 1001555, null],
[mm.jihe.pm.Issue: 1002247, null, mm.jihe.pm.HintLetter: 1002243]
], [mm.jihe.pm.Issue : 882, mm.jihe.pm.MendPlan : 99590, null], [zhaojie1@CMSTEST.com, taoxx@CMSTEST.com, lujb@cmstest.com, liaoel@CMSTEST.com]]
代码如下:
//原循环是这样子的
for(i in issues){
sendRegularIssueEmail(issues,i,mendTracker)
cnt++;
}
//修改后的
for(int i =0;i<issues.size();i++){// 整改跟踪负责人
Object [] obj = (Object [])issues.get(i);
Issue d = (Issue)obj[0]
sendRegularIssueEmail(issues,d,mendTracker)
cnt++;
}
//调用的sendRegularIssueEmail接口如下
private sendRegularIssueEmail(def issueList,Issue i,List sendedList){
}
通过代码和错误日志可以分析出来,是我们参数的类型错误导致的问题,我们需要的参数类型是Issue,而循环出的i的类型是数组[[mm.jihe.pm.Issue: 882, mm.jihe.pm.MendPlan: 99590, null],
[mm.jihe.pm.Issue: 479, mm.jihe.pm.MendPlan: 1001555, null],
[mm.jihe.pm.Issue: 1002247, null, mm.jihe.pm.HintLetter: 1002243]] ,那么就造成上面的错误。
我们只要将类型转换一下取出自己需要的类型就行了。。