本帖最后由 周恺 于 2012-7-15 08:39 编辑
这是因为你的ArrayList集合没有做出泛型限定,所以这个ArrayList集合可以是任意类型的,
同时也包括Collection<?extends Number>允许的类型.
而Collection<? extends Number>的泛型检查取决于ArrayList的泛型
如果ArrayList加上了泛型以后,编译器就可以通过Collection<? extends Number>
进行类型检查了.你可以用ArrayList<String>试试,看还能让你编译通过吗.
这就好比你长着一张大众脸进小区,小区保安不知道你是好人还是坏人,只好放你进去.
如果你长得凶神恶煞的,一看就知道不是好人,保安自然会把你拦下.
所以我们在使用集合的时候,都应该习惯性的加上泛型检查,向一个集合中加入不同类型的对象是不建议的. |