私はGroovyで何かを学んでいる半Javaです。テンプレートパラメータとしての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のルールを破ったが、
を識別することができませんでしなければなりません
私の場合、 'Tb [] ret = new Tb [0];'というメッセージで 'Tbのジェネリック配列を作成できません' – ByeBye