在这里父类引用指向子类对象应该是这样
add( List<Person> list) 假设这是父类引用,那么子类的应该是add(ArrayList<Person> list)而不是指泛型.
是指ArrayList是List的子类.
至于你上面的为什么不行,假设如果我要创建一个泛型为Person的ArrayList对象:
ArrayList<Person> list = new ArrrayList<Person>(); 这里有个要求你记得么吗兄弟?后面的泛型类型要和前面的一致或者你可以不写.你上面的意思是这样
ArrayList<Person> list = new ArrrayList<Studnet>();
具体怎么解释我也不太懂,水平有限,但是我知道这是与泛型擦除有关的,泛型只在编译时期是有效的.实际上编译后虚拟机会将泛型擦除,底层用的全都是Object对象.
|