当我在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。