generics - 带有通用列表的 Groovy CompileStatic

标签 generics groovy

我在 groovy 中有以下代码:

class Test {
  List<Integer> yo(boolean x) {
    List<Integer> res = x ? [] : [1, 2, 3]
  }
}

在我向类添加 @CompileStatic 注释之前,它编译得很好。然后编译失败

Test.groovy: 5: [Static type checking] - Incompatible generic argument types. Cannot assign java.util.List <? extends java.lang.Object> to: java.util.List <Integer>
 @ line 5, column 27.
       List<Integer> res = x ? [] : [1, 2, 3]

是否真的期望 Groovy 无法推断该空列表 [] 的泛型类型?

最佳答案

我建议您根本不要使用泛型。对我来说,它可以像这样编译和运行:

List res = x ? [] : [1, 2, 3]

但是如果你仍然强烈需要泛型,试试这个:

List<Integer> res = x ? [] as List<Integer> : [1, 2, 3]

关于generics - 带有通用列表的 Groovy CompileStatic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228516/

相关文章:

gradle - 使用 @Grab 注解编译 Groovy 项目时出错

java - 如何在 Gradle 的 buildSrc 下的自定义任务中使用第三方依赖项

Delphi Spring框架注册泛型类型

具有有界通配符的 Java 泛型

java - Groovy 与 Java - 浮点精度的差异

xml - Groovy XmlSlurper : Find elements in XML structure

java - 获取用 Java 或 Groovy 填充的有效 oauth_signature 的绝对最小代码?

scala - 可以使 scala 需要一个非 Nothing 泛型方法参数并返回类型安全

java - 我如何使用泛型类型的 bean 来创建配置类? (包括示例)

c# - 创建 Messenger 服务