Компиляция именованных параметров не удается с @CompileStatic - как это исправить? - PullRequest
1 голос
/ 21 июня 2019

Этот фрагмент кода отлично работает в динамически типизируемом 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 Ответ

1 голос
/ 21 июня 2019

В случае статической компиляции, подобной этой, вам нужно выполнить явное приведение к:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...