我半的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