終於解決了這個陳年老問題了:
報錯信息如下:
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], [[email protected], [email protected], [email protected], [email protected]]]
代碼如下:
//原循環是這樣子的
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]] ,那麼就造成上面的錯誤。
我們只要將類型轉換一下取出自己需要的類型就行了。。