2017-10-25 17 views
-1

私は、TとSがFooを拡張するMyClassのコンパレータを作成するために、MyClass<T, S>として定義されたクラスを持っています。java - 型パラメータを含む型のコンパレータを作成する

これを行うにはどうすればよいですか?

不成功の試み:上記の

// Warning: The type parameter MyClass is hiding the type MyClass<T,S> 
public class MyComparator<MyClass> implements Comparator<MyClass> 

// Syntax errors and the warning from above 
public class MyComparator<MyClass<T, S>> implements Comparator<MyClass<T, S>> 

// Syntax errors 
public class MyComparator<MyClass<T extends Foo, S extends Foo>> implements Comparator<MyClass<T extends Foo, S extends Foo>> 

// Syntax errors and the warning from above 
public class MyComparator<MyClass<? extends Foo, ? extends Foo>> implements Comparator<MyClass<? extends Foo, ? extends Foo>> 

そして種々の組み合わせ。正しい方法は何ですか?ありがとうございました。

+0

は、なぜこれらの試みが失敗したことでしょうか?エラーメッセージが表示されるのですか、意図したとおりに動作しませんか? *「なぜ私のコードがうまくいかないのですか?」と尋ねるときにそのようなものを含めることを忘れないでください。 – Zabuza

+4

なぜあなたの 'Comparator'は' Comparable'を実装していますか? – Mena

+0

... 'コンパレータ<...>'を実装する必要があります。 – Zabuza

答えて

1

あなたのクラスは一般的ではありません。常に同じタイプのオブジェクトを比較します。このタイプはMyClass<? extends Foo, ? extends Foo>です。

だから、

public class MyComparator implements Comparator<MyClass<? extends Foo, ? extends Foo>> 
+0

ああ!はい、私はそれについてすべて忘れました、ありがとうございました。 – user3499973

関連する問題