Groovy似乎无法编译我从Generic基类派生的类,并重载了返回泛型数组的方法。 Java中的相同示例似乎可以正确编译,这是令人惊讶的,因为我希望Groovy具有源级兼容性[ref]。
可以使用以下适配器示例重现此内容。这个例子也可以在真棒Groovy Web Console上在线执行。
class Person {}
abstract class BaseAdapter<T> {
public T[] getAll() {
return getAllInternal();
}
protected abstract T[] getAllInternal()
}
class PersonAdapter extends BaseAdapter<Person> {
protected Person[] getAllInternal() {
return new Person[0];
}
}
编译它会产生消息:
Script1.groovy: 12: The return type of Person[] getAllInternal() in PersonAdapter is incompatible with [Ljava.lang.Object; getAllInternal() in BaseAdapter
. At [12:5] @ line 12, column 5.
protected Person[] getAllInternal() {
^
1 error
我的语法不正确吗?或者,这是一个Groovy问题吗?
答案 0 :(得分:1)
我希望Groovy具有源级兼容性。
源级兼容性可能是90%但不完美(这也不是目标)。
我的语法不正确吗?或者,这是一个Groovy问题吗?
可能是一个错误。请提交错误报告。