我半的Java有文化,在Groovy中尝试一些。Java的基地为模板参数
是在Groovy/Java的以下可能:
public class A {
}
public class B {
}
public class C<Ta extends A, Tb extends B> extends Ta {
public Ta[] bArray;
public Tb[] getAllBs()
{
Tb[] ret = new Tb[0];
....
return ret;
}
}
以上定义不显示任何错误。但是,当我尝试使用C作为基类的另一种类型,我得到一个错误:
public class DummyA extends A {};
public class DummyB extends B {};
public class D extends C<DummyA, DummyB> {
}
上述定义显示错误“类型d的层次结构是不一致的”。
如果我重新定义C作为任何以下的,错误消失:
//remove the base class, Ta, from C
public class C<Ta extends A, Tb extends B> {
....
}
(或)
//Use the class A, instead of generic type Ta, as base class
public class C<Ta extends A, Tb extends B> extends A {
....
}
我必须打破一些Java规则,但无法确定
对我来说是失败上'铽[] RET =新铽[0];'具有消息'无法创建Tb'的通用阵列 – ByeBye