一、数组使用泛型 数组使用泛型时候,类型检查是在运行的时候检查的
例如:Animal[] animals = {new Dog[],new Cat[]}
this.eat(animals);
public void eat(Animal[] animals){animals[0] = newPig[]}
使用泛型时候,如果在eat函数中传入Dog[] dogs = {newDog[]}是可以通过编译的,但是在运行期间会报错
二、集合使用泛型 集合使用泛型时候,类型检查是在编译的时候检查的
上面的例子如果改成集合,那么在编译时就不会通过
但是可以用一种方式使得eat里面可以传入dogs只要在eat声明时候声明为:
public void eat(List list1,List list2){}
但是即使是这样,编译器也不会让你在eat方法中加入元素,它只会允许你在eat中查看元素,不能加入新元素,防止在dog中加入猫这样恐怖的事情发生。呵呵----------------------