小编Bri*_*idy的帖子

泛型类类型中的参数化方法

我有一个相当简单的问题.我找不到答案.

这两个代码片段有区别吗?有什么区别?

片段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)

java generics parameterized

5
推荐指数
1
解决办法
342
查看次数

标签 统计

generics ×1

java ×1

parameterized ×1