static <T extends Number> void showBox1(Box<T> box) {
T number = box.get();
System.out.println(number);
}
static void showBox2(Box<? extends Number> box) {
Number number = box.get();
System.out.println(number);
}
1
huijiewei 2021-12-03 22:04:07 +08:00 1
如果只是参数里面泛型用第二种即可
如果返回值有泛型就要用到第一种了 |
2
aguesuka 2021-12-04 10:41:37 +08:00 1
在你的例子中是等效的;
作为方法签名的话, 有一个微妙区别, 第一个方法可以写出以下代码, 而第二个不行; // 假如 box 有一个 void set(E e);的方法 box.set(box.get()); 语义上, 第一个是方法的泛型参数(类型作为类型), 而第二个是通配符泛型类型(只是类型) |