使用通配符有什么区别?

时间:2015-04-15 16:24:21

标签: java generics

我正在学习通配符,我不认为我理解List<Number>List<? extends Number>之间的区别。他们说第一个是数字列表,第二个是数字列表或其任何子类。但是任何子类的每个对象都是超类的实例。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

你做不到:

List<Number> list = new ArrayList<Integer>();

但你可以这样做:

List<? extends Number> list = new ArrayList<Integer>();

什么时候有用?作为接受同一层次结构中的异构对象列表的方法的参数类型,其仅从该列表中读取。那是因为,你不能写任何东西,但是null到第二种列表引用,即,给定第二种声明,你不能这样做:list.add(5);