Java 对于嵌套泛型,Groovy静态编译失败

Java 对于嵌套泛型,Groovy静态编译失败,java,generics,groovy,compiler-errors,compile-static,Java,Generics,Groovy,Compiler Errors,Compile Static,请检查下面的JUnit类示例: import groovy.transform.CompileStatic import org.apache.commons.lang3.tuple.Pair import org.junit.Test import java.util.function.Function @CompileStatic class GroovyFunctionTypeInferenceTest { @Test void functionWithoutPairTest()

请检查下面的JUnit类示例:

import groovy.transform.CompileStatic
import org.apache.commons.lang3.tuple.Pair
import org.junit.Test
import java.util.function.Function

@CompileStatic
class GroovyFunctionTypeInferenceTest {
  @Test
  void functionWithoutPairTest() {
    // some function that operates on list and returns an element of this list
    Function<List<String>, String> function =
        { List<Pair<String, Integer>> it -> it[0] } as Function
    def list = new ArrayList<String>()
    function.apply(list)
  }

  @Test
  void functionWithPair1Test() {
    // some function that operates on list and returns an element of this list
    Function<List<Pair>, Pair> function =
        { List<Pair<String, Integer>> it -> it[0] } as Function
    def list = new ArrayList<Pair>()
    function.apply(list)
  }

  @Test
  void functionWithPair2Test() {
    // some function that operates on list and returns an element of this list
    Function<List<Pair<String, Integer>>, Pair<String, Integer>> function =
        { List<Pair<String, Integer>> it -> it[0] } as Function
    def list = new ArrayList<Pair<String,Integer>>()
    function.apply(list)
  }
}
groovy似乎不喜欢嵌套泛型。在我的例子中,动态编译不是一个选项,严格的类型检查是一个困难的要求


是否有人遇到过类似的错误并给出了建议?

第一个函数的闭包中的参数不是错误的(列表vs列表)?这很有趣。当我看它的时候——是的,它看起来是错的。但是,此函数实际上编译:-)。未编译的函数是functionWithPair2Test,此函数没有任何错误。无论如何,这个问题不再有效——我检查了Groovy JIRA,并且已经有了一张公开的门票。因此,这是已知的错误,他们修复它只是时间问题。然后请添加此作为答案,或者至少在评论中提供一个id/链接,以便其他人在搜索此问题或类似问题时发现此问题。第一个函数闭包中的参数是否错误(列表vs列表)?这很有趣。当我看它的时候——是的,它看起来是错的。但是,此函数实际上编译:-)。未编译的函数是functionWithPair2Test,此函数没有任何错误。无论如何,这个问题不再有效——我检查了Groovy JIRA,并且已经有了一张公开的门票。因此,这是已知的错误,他们修复它只是时间问题。然后请添加此作为答案,或者至少在评论中提供一个id/链接,以便其他人在搜索此问题或类似问题时发现此问题。
Error:(36, -1) Groovy-Eclipse: Groovy:[Static type checking] - Incompatible generic argument types. Cannot assign java.util.function.Function <java.util.List, org.apache.commons.lang3.tuple.Pair> to: java.util.function.Function <List, Pair>
Error:(38, -1) Groovy-Eclipse: Groovy:[Static type checking] - Cannot call java.util.function.Function <java.util.List, org.apache.commons.lang3.tuple.Pair>#apply(java.util.List <Pair>) with arguments [java.util.ArrayList <Pair>]