超级Java通配符

时间:2014-07-07 11:13:42

标签: java generics wildcard super comparable

我读过这样的超级通配符:

public class MyClass <T extends Comparable<? super T>> {
   ...
}

而不是:

public class MyClass <T extends Comparable<T>> {
   ...
}

可以使这个类“更通用”,但我不明白为什么。

有人可以提供一些具体的例子吗?

1 个答案:

答案 0 :(得分:5)

这样你就可以为T提供一个类,它本身不实现Comparable,但是继承自实现Comparable的类。

E.g。

class Baseclass implements Comparable<Baseclass> {
...
}

class Inherited extends Baseclass {
...
}

使用类似

的规范
public class MyClass <T extends Comparable<? super T>> {
...
}

您可以使用MyClass<Inherited>MyClass<Baseclass>,但可以使用

public class MyClass <T extends Comparable<T>> {
...
}

您只能使用MyClass<Baseclass>