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>{
}