我正在学习通配符,我不认为我理解List<Number>
和List<? extends Number>
之间的区别。他们说第一个是数字列表,第二个是数字列表或其任何子类。但是任何子类的每个对象都是超类的实例。有人可以帮我吗?
答案 0 :(得分:1)
你做不到:
List<Number> list = new ArrayList<Integer>();
但你可以这样做:
List<? extends Number> list = new ArrayList<Integer>();
什么时候有用?作为接受同一层次结构中的异构对象列表的方法的参数类型,其仅从该列表中读取。那是因为,你不能写任何东西,但是null
到第二种列表引用,即,给定第二种声明,你不能这样做:list.add(5);