带有通用列表的Groovy CompileStatic

时间:2017-02-14 14:19:20

标签: 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无法推断出该空列表[]的泛型类型?

1 个答案:

答案 0 :(得分:0)

我建议你根本不要使用泛型。对我而言,它就像那样编译并运行良好:

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

但如果您仍然非常需要仿制药,请尝试以下方法:

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