我知道Java,但對Groovy來說是全新的。 Groovy中有一些遺留代碼可供使用。Groovy每個關閉錯誤
我有以下方法在Groovy:
def notificationPrefsByFruit = mapMyNotificationsByFruits(prefs, fruits)
當我mapMyNotificationsByFruits
方法在第一線調試,我得到prefs
爲
def mapMyNotificationsByFruits(prefs,fruits) {
def map = [:]
prefs.each { MainNotification cn ->
cn.fruits.each {
MyNotification an ->
def ex = map[(an.fruitId)]
if (!ex) ex = []
ex.add(an)
map[(an.fruitId)] = ex
}
}
log.info("map is: $map")
return map
}
以上方法會從如下的另一種方法叫做
MainNotification [someId=ABC123, [email protected], fruits=[{fruitId=XYZ123, someField=0}]]
在運行這段代碼時,我得到以下錯誤:
groovy.lang.MissingMethodException: No signature of method: com.somepackage.SomeClass$_mapMyNotificationsByFruits_closure5$_closure10.doCall() is applicable for argument types: (groovy.json.internal.LazyMap) values: [[{fruitId=XYZ123, someField=0}]]
這裏有什麼問題?
是什麼,這些線做:
MyNotification an ->
def ex = map[(an.fruitId)]
if (!ex) ex = []
ex.add(an)
map[(an.fruitId)] = ex
它是一個鑄造的問題?
更換上面下面的代碼行解決問題:
MyNotification an = it
def ex = map[(an.fruitId)]
if (!ex) ex = []
ex.add(an)
map[(an.fruitId)] = ex
但我不知道,如果這兩個代碼塊是相同的,我是正確的修復它。
在此先感謝!
什麼是輸入和預期輸出? – Rao
您沒有提供足夠的信息,但試圖解決您的問題。 – dsharew