命名参数编译因@CompileStatic 而失败——如何解决?
Named parameters compilation fails with @CompileStatic - how to fix it?
这段代码在动态类型中完美运行Groovy
buildDirectory.traverse(type: FILES, nameFilter: ~/dependency-updates-report.xml/) {
reports << it
}
但是在将 @CompileStatic
添加到 class 时出现错误,类似于
'traverse' in 'org.codehaus.groovy.runtime.ResourceGroovyMethods' cannot be applied to ...
Map
参数是这里的问题吗?
EDIT buildDirectory 是 java.io.File
类型并被注入。
如果是这样的静态编译,您需要显式转换为:
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
的子类。
这段代码在动态类型中完美运行Groovy
buildDirectory.traverse(type: FILES, nameFilter: ~/dependency-updates-report.xml/) {
reports << it
}
但是在将 @CompileStatic
添加到 class 时出现错误,类似于
'traverse' in 'org.codehaus.groovy.runtime.ResourceGroovyMethods' cannot be applied to ...
Map
参数是这里的问题吗?
EDIT buildDirectory 是 java.io.File
类型并被注入。
如果是这样的静态编译,您需要显式转换为:
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
的子类。