特殊泛型定义报告不兼容的类型?

时间:2018-08-06 20:00:46

标签: grails groovy

当我在Grails控制台或应用程序代码本身中执行以下代码时...

import grails.compiler.GrailsCompileStatic
import grails.util.Pair

@GrailsCompileStatic
class MyClass {
    void main(String[] args) {
        Pair<Pair<Integer, Double>, String> res = something()
    }

    private Pair<Pair<Integer, Double>, String> something() {
        Pair<Integer, Double> aValue = new Pair(0, 0.0)
        String bValue = ""
        return new Pair<Pair<Integer, Double>, String>(aValue, bValue)
    }
}

...我收到以下错误信息...

Script1.groovy: 8: [Static type checking] - Incompatible generic argument types. Cannot assign grails.util.Pair <Pair, String> to: grails.util.Pair <Pair, String>
 @ line 8, column 48.
   teger, Double>, String> res = something(
                                 ^

Script1.groovy: 14: [Static type checking] - Cannot call grails.util.Pair <Pair, String>#<init>(grails.util.Pair <Integer, Double>, java.lang.Double) with arguments [grails.util.Pair <java.lang.Integer, java.lang.Double>, java.lang.String] 
 @ line 14, column 16.
           return new Pair<Pair<Integer, Double>, String>(aValue, bValue)
                  ^

错误报告Cannot call grails.util.Pair <Pair, String>#<init>(grails.util.Pair <Integer, Double>, java.lang.Double)。但是Pair类的定义如下:

class Pair<A, B> {
    Pair(A a, B, b) { }
}

有人可以解释为什么发生此错误吗?

我正在使用Grails v3.3.1和Groovy v2.4.11。

0 个答案:

没有答案