В настоящее время я перевожу устаревший класс groovy с методами на Java, и для большинства методов это было легко с небольшими изменениями.
Теперь я застрял в методе, который принимает замыкание как параметр:
transformer.renameNumbers([:], { Number->
return "${number.name}@somecompany.com"
})
}
реализация renameNumbers
:
renameNumbers(Map<String,String> renameMap, someclosure = {it}) {
numbers.each { it->
if(newUsername == null ) {
newNumbername = someclosure.call(it)
}
if(newNumbername!=null && newNumbername!=it.number) {
def oldNumber= it.number
it.number = newNumbername
log.info("Changed numbername key of from '$oldNumber' to '$newNumbername'")
}
}
Проблема в том, что если я попытаюсь просто передать: transformer.renameNumbers(Map, Object)
жалуется:
groovy.lang.MissingMethodException: No signature of method: org.eclipse.emf.ecore.util.EObjectContainmen.call() is applicable for argument types:
Полагаю, это потому, что в моем обычном Java-объекте нет методов call ().
Есть ли способ обойти это? Например, если я создаю пользовательский класс Java с пользовательским методом вызова?
Спасибо