java – Generics – 无法添加到带有无界通配符的List
发布时间:2020-12-15 04:56:59 所属栏目:Java 来源:网络整理
导读:我实例化以下列表: // I am just revising generics again and the following is just cursory code!List? super Integer someList = new ArrayListObject();someList.add(new Object()); 以上不起作用.我收到编译器错误.但是,以下工作: List? super Integ
我实例化以下列表:
// I am just revising generics again and the following is just cursory code! List<? super Integer> someList = new ArrayList<Object>(); someList.add(new Object()); 以上不起作用.我收到编译器错误.但是,以下工作: List<? super Integer> someList = new ArrayList<Object>(); someList.add(11); 我知道您可以将对象添加到包含无界通配符的集合中,而不是有界通配符. 但是,为什么以上不起作用? 解决方法
这声明它是一个超类型的东西的列表,而不是列表可以包含任何超类型的整数.换句话说,对于编译器,它可以是List< Integer>,List< Number>.或者列表< Object>,但它不知道哪个,所以你不能向List添加任何东西.你唯一可以安全添加的是Integer,因为它保证是List可能拥有的任何类型的子类型.
换句话说,?代表一种类型,而不是任何类型.这是一个非显而易见但重要的区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读