groovy似乎无法编译一个类,在这个类中,我从一个泛型基类派生了一个类,并重载了一个返回泛型数组的方法。Java中的同一个示例似乎正确编译,这与我预期的Groovy具有源级兼容性是惊人的。
ref
]
这可以通过以下适配器示例重现。这个例子也可以在线执行
Groovy Web Console
.
class Person {}
âabstract class BaseâAdapter<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
我有语法错误吗?或者,这是一个绝妙的问题吗?