我有一个相当简单的问题.我找不到答案.
这两个代码片段有区别吗?有什么区别?
片段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) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
Fragment2:
public class BinaryTree<T extends Comparable<? super T>> {
...
public void add(T value) {
...
}
public void add(T value, Node node) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
片段1指定明确的是,参数值必须是任一类型Ť或类型的子类型Ť.
Fragment2指定参数值必须是T类型.但是从我的小知识和经验来看,我认为我也可以在这里提供T的子类型.与fragment1相同.
我查看了这两个片段的反汇编字节码.确实存在差异:
< …Run Code Online (Sandbox Code Playgroud)