public class Foo {
public static void main(String[] args) {
// Read for E, Write for S
// 读取时使用 extends, 写入时使用 super
Foo foo = new Foo();
List<Integer> ints = new ArrayList<>();
foo.read(ints);
List<? super Number> unknown = new ArrayList<>();
foo.write(unknown);
}
// Read for E
// 用于读场景, 取出的所有元素的都向上转型为T,这里T为Number类型
public void read(List<? extends Number> nums) {
Number one = nums.get(0);
Number two = nums.get(1);
for (Number num : nums) {
// do sth for num
}
}
// Write for S
// 用于写场景,可以添加T的子类型,这里T为Number类型
public void write(List<? super Number> nums) {
nums.add(1);
nums.add(3.14);
nums.add(new BigDecimal(100));
}
}