【问题标题】:Named parameters compilation fails with @CompileStatic - how to fix it?@CompileStatic 命名参数编译失败 - 如何解决?
【发布时间】:2019-06-21 07:24:50
【问题描述】:

这段代码在动态类型的 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 参数是这里的问题吗?

EDIT buildDirectory 的类型为java.io.File 并被注入。

【问题讨论】:

  • 你能显示完整的错误信息吗?以及如何声明buildDirectory

标签: groovy compile-static


【解决方案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 的子类。

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2017-12-02
    • 2020-04-13
    • 1970-01-01
    • 2018-12-08
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多