黑马程序员技术交流社区
标题:
多态与泛型学习心得
[打印本页]
作者:
卞潇洋
时间:
2012-11-22 13:51
标题:
多态与泛型学习心得
话说学泛型与多态让我真的晕了一把
泛型代码可以这样些
List<Child> list = new ArrayList<Child>();
复制代码
但不能这样写
List<Parent> list = new ArrayList<Child>();
复制代码
这与数组很不一样:
import java.util.*;
class Parent{}
class Child extends Parent{}
public class TestPoly{
public static void main(String args[]){
Parent[] myArray =new Child[3];
}
}
复制代码
这段代码是可以通过的,所以泛型中的多态工作方式与数组中的不同。
但如果是作为一个方法的话,如这样:
public void addAnimal(List<Animal> animals){
animals.add(new Dog());
}
public static void main(String[] args){
List<Dog> animals = new ArrayList<Dog>();
animals.add(new Dog());
animals.add(new Dog());
AnimalDoctor doc = new AnimalDoctor();
doc.addAnimal(animals);
}
复制代码
当然这样肯定不会不会执行成功,那有什么方法可以解决吗,是的,有:将方法中的参数List<Animal> animals 变为List<? extends Animal >但要付出代价,即传入以后将不能对集合进行添加。当然还有另一种方法可以改变这种局面,那就是<? super >,如果Dog、cat继承了Animal,那么可以这样写<? super Dog>,这样便可以进行添加了!
作者:
许庭洲
时间:
2012-11-23 07:29
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2