派生类中的泛型类型参数

时间:2010-09-30 19:17:07

标签: groovy

Groovy似乎无法编译我从Generic基类派生的类,并重载了返回泛型数组的方法。 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

我的语法不正确吗?或者,这是一个Groovy问题吗?

1 个答案:

答案 0 :(得分:1)

  

我希望Groovy具有源级兼容性。

源级兼容性可能是90%但不完美(这也不是目标)。

  

我的语法不正确吗?或者,这是一个Groovy问题吗?

可能是一个错误。请提交错误报告。