,我读了使用通配符与超喜欢这样的:Java的通配符超级
public class MyClass <T extends Comparable<? super T>> {
...
}
代替:
public class MyClass <T extends Comparable<T>> {
...
}
可以使类的更通用的',但我不明白为什么。
有人可以提供一些具体的例子吗?
,我读了使用通配符与超喜欢这样的:Java的通配符超级
public class MyClass <T extends Comparable<? super T>> {
...
}
代替:
public class MyClass <T extends Comparable<T>> {
...
}
可以使类的更通用的',但我不明白为什么。
有人可以提供一些具体的例子吗?
这样你就可以为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>
我实际上已经尝试过。我创建了一个类Fruit,它实现了Comparable
这是我的另一个问题:https://stackoverflow.com/questions/24629547/java-wildcard-with-super-unexpected-behaviour?noredirect=1#comment38171540_24629547 – Kami
@Kami你会看到,当你的MyClass有getters和setters接受或传递T类型的对象。如果没有超类型,这将无法正常工作。 –
可能重复:什么是PECS?](http://stackoverflow.com/questions/2723397/java-g能量是什么 - 佩奇) – ujvl
可能重复[什么是 super T>语法?](http://stackoverflow.com/questions/2827585/what-is-super-t-syntax) –