泛型的相关知识
指定的泛型类型,要添加集合中的元素,只能是泛型的指定的元素类型,其他类型无法添加;
从集合中取出的元素类型是泛型指定的类型,调用父类的方法,不需要进行向下转型;而调用子类的方法,需要进行向下转型;
1 package generic; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 public class GenericTest01 { 7 public static void main(String[] args) { 8 /*使用传统方法, 创建一个集合对象 9 ArrayList arrayList = new ArrayList(); 10 //准备对象 11 Dog dog = new Dog(); 12 Cat cat = new Cat(); 13 //将对象添加到集合当中 14 arrayList.add(dog); 15 arrayList.add(cat); 16 System.out.println(arrayList ); 17 //遍历arraylist集合 18 Iterator iterator = arrayList.iterator(); 19 while (iterator.hasNext()) {//当迭代器中有下一个对象时,返回相应的值 20 Object obj = iterator.next(); 21 //obj中没有move方法,无法调用,需要向下转型 22 if (obj instanceof Animal){ 23 Animal obj1 = (Animal) obj; 24 obj1.move(); 25 } 26 } 27 */ 28 //使用泛型arrayList<Animal>,表示集合arraylist只允许存储Animal类型的数据 29 //使用泛型可以很好的统一元素的类型; 30 ArrayList<Animal> myList = new ArrayList<>(); 31 //无法添加字符串类型数据;只能添加Animal类型 32 //animals.add("lanqi"); 33 //准备目标对象 34 Dog dog = new Dog(); 35 Cat cat = new Cat(); 36 //把对象加到集合中去 37 myList.add(dog); 38 myList.add(cat); 39 //遍历集合对象(myList)使迭代器来进行遍历 40 Iterator<Animal> iterator = myList.iterator(); 41 while (iterator.hasNext()) { 42 Animal animal = iterator.next(); 43 animal.move(); 44 //如果要调用子类的对象,还是需要进行向下转型 45 // Animal animal = iterator.next(); 46 if (animal instanceof Cat){ 47 //animal是父类,而cat是子类,要去调用cat,需要进行向下转型 48 Cat animal1 = (Cat) animal; 49 animal1.catchMouse(); 50 }
51 } 52 53 } 54 } 55 56 //创建一个类 57 class Animal{ 58 //父类方法 59 public void move(){ 60 System.out.println("动物在移动..."); 61 } 62 } 63 class Dog extends Animal{ 64 //特有的方法 65 public void eat(){ 66 System.out.println("狗在吃东西.."); 67 } 68 } 69 70 class Cat extends Animal{ 71 //特有的方法 72 public void catchMouse(){ 73 System.out.println("猫正在抓老鼠"); 74 } 75 }
想多了都是问题,做多了才是答案

浙公网安备 33010602011771号