
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 Dec 3, 2021 如果只是参数里面泛型用第二种即可 如果返回值有泛型就要用到第一种了 |
2 aguesuka Dec 4, 2021 在你的例子中是等效的; 作为方法签名的话, 有一个微妙区别, 第一个方法可以写出以下代码, 而第二个不行; // 假如 box 有一个 void set(E e);的方法 box.set(box.get()); 语义上, 第一个是方法的泛型参数(类型作为类型), 而第二个是通配符泛型类型(只是类型) |