1. public class Foo {
    2. public static void main(String[] args) {
    3. // Read for E, Write for S
    4. // 读取时使用 extends, 写入时使用 super
    5. Foo foo = new Foo();
    6. List<Integer> ints = new ArrayList<>();
    7. foo.read(ints);
    8. List<? super Number> unknown = new ArrayList<>();
    9. foo.write(unknown);
    10. }
    11. // Read for E
    12. // 用于读场景, 取出的所有元素的都向上转型为T,这里T为Number类型
    13. public void read(List<? extends Number> nums) {
    14. Number one = nums.get(0);
    15. Number two = nums.get(1);
    16. for (Number num : nums) {
    17. // do sth for num
    18. }
    19. }
    20. // Write for S
    21. // 用于写场景,可以添加T的子类型,这里T为Number类型
    22. public void write(List<? super Number> nums) {
    23. nums.add(1);
    24. nums.add(3.14);
    25. nums.add(new BigDecimal(100));
    26. }
    27. }