public static void main(String[] args) { // super下界,适合存元素 List<? super Number> superList = new ArrayList<Number>();//表示类型必须是Number或者Number的超类 Integer a =10; superList.add(a);//为什么可以放子类而不能放父类?? Object o ="2343"; // superList.add(o); 报错,只能存放Number及其子类对象 Number s = (Number)superList.get(0);//取元素需要强转?? Object ob =superList.get(0);//Object就可以直接接 System.out.println(s); // extends上界,适合取元素 List<? extends Number> extendList = new ArrayList<>(); // extendList.add(10);直接add会报错,因为extendList只是一个容器会放Number类型或者其子类,放进去并没有标识具体类型,只是一个占位符,此处编译不通过 List<Integer> list1=new ArrayList<>(); list1.add(1); extendList = list1;//可以这样赋值,初始化,相当于把一个容器的东西直接倒入另一个容器 List<Object> objs=new ArrayList<>(); objs.add("23"); // extendList = objs; Object是Number的父类,会编译不通过 Number num = extendList.get(0);// Object num1 = extendList.get(0); // Integer num2 = extendList.get(0); 只能用Number类或者其父类接,因为不确定其具体的类型 }
List<? super T>和List<? extends T>问题
最新推荐文章于 2024-05-10 17:48:23 发布