如何正确使用List<?>
2017-04-12 09:48
302 查看
4000
List<?>这种语法很奇怪,是什么意思?
Java中把一个(?)称为类型通配符。为了表示各种泛型List的父类,可以使用List<?>,意思是元素类型未知的List,它的元素类型可以匹配任何类型。先看看下面这段代码:
现在可以使用任何类型的List来调用它,程序依然可以访问集合c中元素。
但这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素加入其中,例如,下面的代码会引起编译错误。
因为程序无法确定c集合元素的类型,所以不能向其中添加对象。
上面两个小例子说明了List<?>的正确使用和错误使用两种情况。简单一句话:可以使用get访问元素,但不能使用add添加元素。
List<?>这种语法很奇怪,是什么意思?
Java中把一个(?)称为类型通配符。为了表示各种泛型List的父类,可以使用List<?>,意思是元素类型未知的List,它的元素类型可以匹配任何类型。先看看下面这段代码:
public void test(List<?> c) { for(int i=0;i<c.size();i++) { System.out.println(c.get(i)); } }
现在可以使用任何类型的List来调用它,程序依然可以访问集合c中元素。
但这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素加入其中,例如,下面的代码会引起编译错误。
List<?> c = new ArrayList<String>(); //下面程序引起编译错误 c.add(new Object());
因为程序无法确定c集合元素的类型,所以不能向其中添加对象。
上面两个小例子说明了List<?>的正确使用和错误使用两种情况。简单一句话:可以使用get访问元素,但不能使用add添加元素。
相关文章推荐
- 如何使用 BindingSource 绑定 ListBox,同时解决绑定 List<T> 后修改数据源不能同时刷新界面显示的问题
- VS2010使用扩展方法对List<T>进行随机排序
- FCL应用技巧之------使用List<T>的Distinct()去除重复元素
- Map类型数据的使用和如何输出Map<String, List<>>类型的数据
- 如何在sqlmap中使用 大于号> 小于号 <
- List<T>的使用
- struts2 jsp页面访问List, set 和<s:iterator>的使用
- 使用万能表单解析程序将表单数据封装成List<Map>
- List<? extends Map<String, ?>> 如何理解呢?
- Hql的select 语句返回Ilist<object[]>类型,如何转换为映射类型
- 关于List<T> :Distinct 和 OrderBy 、GroupBy使用简例
- 如何使用<identity impersonate="true"/>
- 关于List<String>的使用日记
- 如何使用<identity impersonate="true"/>
- 【泛型】使用List&lt;T&gt;篇
- 使用Map把sql返回的list<Object>转成需要的实体对象
- 写一个MyList<T>的类,内部用T[]实现(不能使用系统的List<T>类),需要实现的接口如下:
- .Net:再现List<T>:相关方法使用
- [C#]泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,List<T>,Dictionary<Tkey,Tvalue>,SortedList<Tkey,Tvalue>,
- Struts2中使用标签<s:checkboxlist>的问题