我知道用的是什么ArrayList<T>,但我什么时候应该使用ArrayList<?>?你能用例子解释一下吗?谢谢.
Str*_*ior 13
据我所知,ArrayList<?>基本上告诉编译器:
是的,我知道有一个通用版本的ArrayList可供我使用,但我真的,真的不知道我期望在这个中使用什么类型的对象.所以不要给我警告我不会按照我应该的方式使用泛型.
我刚刚了解到,使用Raw Types(ArrayList)和泛型(带通配符(ArrayList<?>))之间存在真正的区别,这不仅仅是避免编译器警告.显然,一旦您将某些内容声明为Raw类型,即使泛型不是基于您省略的类型,也不会对该类型的任何方法起作用泛型.请看这里的例子.
因此,虽然我的原始答案通常是正确的,但我认为重要的是提到使用ArrayList<?>而ArrayList不仅仅是删除编译器警告的问题.
http://download.oracle.com/javase/tutorial/java/generics/wildcards.html
注意:也可以使用super关键字而不是extends来指定下限.
<? super Animal>因此,代码将被解读为"未知类型,它是动物的超类型,可能是动物本身".您还可以使用无界通配符指定未知类型,它看起来就像<?>.无界的通配符基本上与说法相同<? extends Object>.
| 归档时间: |
|
| 查看次数: |
8618 次 |
| 最近记录: |