我有一个相当简单的问题。 我无法找到通过搜索虽然一个答案。
有没有在这两个代码片段有区别吗? 而有什么区别?
片段1:
public class BinaryTree<T extends Comparable<? super T>> {
...
public <E extends T> void add(E value) {
...
}
public <E extends T> void add(E value, Node node) {
...
}
...
}
Fragment2:
public class BinaryTree<T extends Comparable<? super T>> {
...
public void add(T value) {
...
}
public void add(T value, Node node) {
...
}
...
}
片段1指定明确的是,参数值必须是任一类型T或T类型的子类型。
Fragment2指定,该参数值必须是类型T的。 但是从我的小知识和经验,我觉得我还可以提供T的亚型这里。 因此,相同片段1。
我看着这两个片段的拆卸字节代码。 的确是有区别的:
< public <E extends T> void add(E);
---
> public void add(T);
这只是反映了源代码...
我只是不明白的意思。 而且我也无法找到一个示例应用程序,它显示的差异。
感谢您的意见。