8

2 つのパラメーターを取るクラスを作成したいと考えています。1 つは単純に T と入力する必要があります。もう 1 つは、T と の両方を拡張するものとして入力する必要がありSomeInterface<T>ます。これを試すと

public class SomeClass<T, S extends SomeInterface<T> & T>

その後、Javaは不平を言います

「型 T はインターフェイスではありません。境界付きパラメーターとして指定することはできません」

代わりに、Sのインターフェースを作成しようとすると

public interface TandSomeInterface<T> extends SomeInterface<T>, T

その後、Javaは不平を言います

「型パラメーター T をスーパータイプとして参照できません」

Javaでこれを行う方法はありますか? C++でできると思います...?

4

2 に答える 2

3

これは、インターフェースを拡張する場合にも機能します。

public class SomeClass<T extends I, S extends SomeInterface<T> & I>

しかし多分それはあなたが望むものではないかもしれません...

于 2010-03-30T08:57:39.673 に答える
3

Tインターフェイスであることを保証するコントラクトがないため、型パラメーターを拡張するインターフェイスを作成することはできませんT。もちろん、クラスを拡張するインターフェースは許可されていません。

于 2010-03-30T08:28:31.370 に答える