为什么我不能在这种类型的列表中添加整数,即使Integer扩展了Number>
List<? extends Number> numList = new ArrayList<Integer>();
Integer f = 12;
numList.add(f);
答案 0 :(得分:3)
在PECS原则上查看this post。相关报价:
您想要向集合中添加内容。
然后列表是消费者,因此您应该使用Collection<? super Thing>
。
简而言之,您希望使用super
而不是extends
:
List<? super Number> numList = new ArrayList<>();
Integer f = 12;
numList.add(f);
答案 1 :(得分:2)
如果您想存储任何类型的号码,您只需执行以下操作:
List<Number> numList = new ArrayList<Number>();
答案 2 :(得分:0)
如果要将元素添加到列表中,则需要使用超级关键字。
List<? super Integer> numList = new ArrayList<Integer>();
然后再做
numList.add(10);
答案 3 :(得分:0)
该列表可以定义为List,也可以列出其他类型,在这种情况下,编译器不允许将Integer存储到List中:这会在类型安全功能中产生问题。
如果您需要您可以使用此
Date: 2016-10-18 08:58:28
Fatal: array(
['type'] => 16384,
['message'] => 'This class is deprecated since 3.2 and will be removed with the 4.0 release.Use Sonata\BlockBundle\Block\Block\Service\AbstractBlockService instead.',
['file'] => '/www/managedoc/branch/hoffereka/app/cache/superadmin_dev/classes.php',
['line'] => 8575,
)