这就是我所知道的:
Double
是子类型,Number
而List<Double>
不是子类型List<Number>
.List<Dog>
不是子类型,List<Animal>
因为你可以添加Cat
,List<Animal>
但你不能这样做List<Dog>
.List<? extends Number>
表示此列表可以存储Number类型的变量和Number子类型的变量.List<Double>
表示此列表可以存储Double类型的变量.如果上面的任何错误,请纠正我,然后是List<Double>
子类型List<? extends Number>
和为什么?
public void run(){
setFont("Courier-24");
//Define list as ArrayList<Integer>
ArrayList<Integer> list = new ArrayList<Integer>();
readList(list);
}
private void readList(ArrayList list){
list.add("Hello");
list.add(2);
println("list = "+list);
println("Type of list = "+list.get(0).getClass());
println("Type of list = "+list.get(1).getClass());
}
Run Code Online (Sandbox Code Playgroud)
结果:
list = [Hello,2]
list的类型= class java.lang.String
list的类型= class java.lang.Integer
这是我的代码和结果.我的问题是,Integer类型的ArrayList如何可以存储String对象?现在列表的类型是什么?这是什么机制?