GENERIC

List<?>与List<Object>

List<?>一般用在printList(List<?> list)

public void printList(List<?> list){//如果用List<Object>的话就不能接受List<Integer>等参数了
	for(Iterator<?> i = list.iterator();i.hasNext();){
		System.out.println(i.next());
	}
	
	/**
	 * //使用?通配符的容器只能是只读的,因为add的时候会:
	 * The method add(capture#4-of ?) in the type List<capture#4-of ?> 
	 * is not applicable for the arguments (Object)
	 */
	Object o = new Object();
	list.add(o);
}
 

List<Object>暂时还不知道用在什么场合,可以用在逃避类型安全警告上。由于List<Integer>类型并不能赋值给List<Object>(虽然Integer是Object的子类,但两个List被视为不同的类型),似乎决定了List<Object>并不会有什么特别的大用处。

 

 

自己扩展支持泛型容器示例

class Box<T>{
	private List<T> contents;
	
	public void setContents(ArrayList<T> list)
	{
		contents = list;
	}
	
	public void add(T e){
		contents.add(e);
	}
}

  限制参数类型

class NumberBox<N extends Number> extends Box<N>{
   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值