12

次の C# 汎用制約に似た汎用制約を Java で定義する方法はありますか?

class Class1<I,T> where I : Interface1, Class2 : I

私はこのようにしようとしています:

class Class1<I extends Interface1, T extends I & Class2>

しかし、コンパイラは「Class2」部分について不平を言います: 型パラメーターの後に他の境界を続けることはできません。

4

2 に答える 2

5

このコードはここでうまくコンパイルされます:

interface Interface1 {}

class Class2 {}

class Class1<I extends Interface1, T extends Class2 & Interface1> {}

とにかくInterface1だけを想定しているのに、なぜそこにI型が必要なのですか?(クラスでは、 IがInterface1を拡張する以上のことはわかりません)

于 2008-09-25T10:02:09.583 に答える
5

Java コードを解決する最も簡単な方法は、Class2 をインターフェースにすることです。

型パラメーターを制約して、複数のクラスまたは型パラメーターを拡張することはできません。さらに、ここでは super を使用できません。

于 2008-09-25T12:32:18.067 に答える