泛型的相关知识

指定的泛型类型,要添加集合中的元素,只能是泛型的指定的元素类型,其他类型无法添加;

从集合中取出的元素类型是泛型指定的类型,调用父类的方法,不需要进行向下转型;而调用子类的方法,需要进行向下转型;

 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 }

 

posted @ 2022-07-31 15:57  捞月亮的渔夫  阅读(30)  评论(0)    收藏  举报