java kotlin泛型:协变,逆变

55 阅读1分钟
        //协变(Number是Integer的父类,那么List<? extends Number>是List<? extends Integer>的父类)
        //只能读,不能写,== kotlin out
        List<? extends Integer> integerList = new ArrayList<>();
        List<? extends Number> outList = integerList;
//        outList.add(1.1);
        Number i = outList.get(0);

        //逆变(Number是Integer的父类,那么List<? super Double>是List<? super Number>的父类)
        //只能写,不能读,== kotlin in
        List<? super Number> inList = new ArrayList<>();
        List<? super Double> doubleList = inList;
        doubleList.add(1.1);
        Object o = inList.get(0);