0
点赞
收藏
分享

微信扫一扫

javaSE关于泛型的笔记(1)

琛彤麻麻 2022-02-12 阅读 56
package collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class GenericTest01 {
    public static void main(String[] args) {
        /*// 不使用泛型机制,分析程序存在缺点
        List myList = new ArrayList();

        // 准备对象
        Cat c = new Cat();
        Bird b = new Bird();

        // 将对象添加到集合当中
        myList.add(c);
        myList.add(b);

        // 遍历集合
        Iterator it = myList.iterator();
        while (it.hasNext()){
            Object obj = it.next();
            if (obj instanceof Cat){
                Cat cat = (Cat)obj;
                cat.catchMouse();
            }
            if (obj instanceof Bird){
                Bird bird = (Bird)obj;
                bird.fly();
            }
        }*/

        // 使用泛型,表示List集合中只允许存储Animal类型的数据
        List<Animal> myList = new ArrayList<Animal>();

        // 准备对象
        Cat c = new Cat();
        Bird b = new Bird();

        // 将对象添加到集合当中
        myList.add(c);
        myList.add(b);

        // 遍历集合,表示迭代器迭代的是Animal类型
        Iterator<Animal> it = myList.iterator();
        while (it.hasNext()){
            /*// 不需要向下转型
            Animal a = it.next();
            a.move();*/

            // 如果调用子类特有的方法,还是需要向下转型
            Animal a = it.next();
            if (a instanceof Cat) {
                Cat cat = (Cat)a;
                cat.catchMouse();
            }
            if (a instanceof Bird) {
                Bird bird = (Bird)a;
                bird.fly();
            }
        }
    }
}

class Animal{
    public void move(){
        System.out.println("动物在移动!");
    }
}

class Cat extends Animal{
    public void catchMouse(){
        System.out.println("猫抓老鼠!");
    }
}

class Bird extends Animal{
    public void fly(){
        System.out.println("鸟儿在飞翔!");
    }
}
举报

相关推荐

0 条评论