Компиляция именованных параметров не удается с @CompileStatic - как это исправить?
Этот кусок кода отлично работает в динамически типизируемом Groovy
buildDirectory.traverse(type: FILES, nameFilter: ~/dependency-updates-report.xml/) {
reports << it
}
но при добавлении @CompileStatic
к классу он получает ошибку, что-то вроде
'traverse' in 'org.codehaus.groovy.runtime.ResourceGroovyMethods' cannot be applied to ...
Это Map
Параметр здесь проблема?
РЕДАКТИРОВАТЬ buildDirectory имеет тип java.io.File
и вводится.
1 ответ
В случае статической компиляции, подобной этой, вам нужно сделать явное приведение к:
buildDirectory.traverse([type: FILES, nameFilter: ~/dependency-updates-report.xml/] as Map) {
reports << it
}
Проблема здесь в том, что File.traverse()
метод ожидает карту типа
Map<String, Object>
в то время как создание идиоматической карты Groovy создает карту типа
LinkedHashMap<String, Serializable>
Этот Serializable
здесь проблема, потому что это не подкласс java.lang.Object
,