java - 为包含类型参数的类型创建Comparator

时间:2017-10-25 15:45:17

标签: java generics comparator type-parameter

我有一个定义为MyClass<T, S>的类,我想为MyClass创建一个比较器,其中T和S扩展为Foo。

我该怎么做呢?

尝试失败:

// 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>>

以上的各种组合。什么是正确的方法?谢谢。

1 个答案:

答案 0 :(得分:1)

你的班级不是通用的。它总是比较相同类型的对象,这种类型是MyClass<? extends Foo, ? extends Foo>

所以它应该是

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