Java关于泛型

package com.javase.collection.generic泛型;

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

/**
 * 关于泛型:
 *     1.泛型是JDK5.0之后推出的新特性
 *     2.泛型这种语法机制,只是在程序编译阶段起作用,只是给编译器参考的(运行阶段泛型没用!)
 *     3.使用泛型的优点:
 *           - 集合中存储的元素类型统一了。
 *           - 从集合中取出的元素是泛型指定的类型,减少了“向下转型”的操作。
 *     4.使用泛型的缺点:
 *           - 导致集合中存储的元素缺乏多样性。
 */
public class GenericText {
    public static void main(String[] args) {
//        采用泛型来创建集合(指定List集合中只能存储Animal,存储其他类型就会报错)
//        List<Animal>这里写上泛型<Animal>以后,new ArrayList<>()这里的<>就可以不写,程序能够自动推断,这是JDK8以后的新特性。
        List<Animal> myList = new ArrayList<>();

//        创建动物对象
        Cat c = new Cat();
        Bird b = new Bird();

//        向集合中添加元素
        myList.add(c);
        myList.add(b);

//        获取迭代器,该迭代器迭代的是Animal类型
        Iterator<Animal> iterator = myList.iterator();
//        遍历集合
        while (iterator.hasNext()){
            Animal a = iterator.next();     //不使用泛型这里获取对象的类型只能是Object类型,使用泛型之后就是泛型所指定的类型
            a.move();
        }
        System.out.println("-----------------------------");

        Iterator<Animal> iterator1 = myList.iterator();
        while (iterator1.hasNext()){
            Animal a = iterator1.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值