这段代码在动态类型的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
,并已注入。
答案 0 :(得分: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
的子类。