次の C# 汎用制約に似た汎用制約を Java で定義する方法はありますか?
class Class1<I,T> where I : Interface1, Class2 : I
私はこのようにしようとしています:
class Class1<I extends Interface1, T extends I & Class2>
しかし、コンパイラは「Class2」部分について不平を言います: 型パラメーターの後に他の境界を続けることはできません。
次の C# 汎用制約に似た汎用制約を Java で定義する方法はありますか?
class Class1<I,T> where I : Interface1, Class2 : I
私はこのようにしようとしています:
class Class1<I extends Interface1, T extends I & Class2>
しかし、コンパイラは「Class2」部分について不平を言います: 型パラメーターの後に他の境界を続けることはできません。
このコードはここでうまくコンパイルされます:
interface Interface1 {}
class Class2 {}
class Class1<I extends Interface1, T extends Class2 & Interface1> {}
とにかくInterface1だけを想定しているのに、なぜそこにI型が必要なのですか?(クラスでは、 IがInterface1を拡張する以上のことはわかりません)
Java コードを解決する最も簡単な方法は、Class2 をインターフェースにすることです。
型パラメーターを制約して、複数のクラスまたは型パラメーターを拡張することはできません。さらに、ここでは super を使用できません。