IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 泛型的个人理解 -> 正文阅读

[Java知识库]泛型的个人理解

package Genericity;

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

/*
    泛型

 */
public class Test01 {
    public static void main(String[] args) {
        //不使用泛型时,分析程序存在的缺点
//        List list = new ArrayList();
//        Cat cat = new Cat();
//        Bird bird = new Bird();
//        list.add(cat);
//        list.add(bird);
//        //迭代器
//        Iterator iterator = list.iterator();
//        while(iterator.hasNext()){
//            Object next = iterator.next();
//            if (next instanceof Animal) {
//                Animal animal = (Animal) next;//不使用泛型 每次迭代出的元素都需要强制转换成Animal才能使用.move方法
//                animal.move();
//            }
//        }
/*
    JDK5之后的泛型机制
    而使用泛型的好处是:
        1.集合中存储的元素类型统一了
        2.从集合中取出的元素类型都是泛型指定的类型,不需要每次都进行强转
       缺点?
       导致集合中的元素缺乏多样性,只能存一种类型。
 */
        List<Animal> list = new ArrayList<Animal>();
        Cat cat = new Cat();
        Bird bird = new Bird();
        list.add(cat);
        list.add(bird);
        Iterator<Animal> iterator = list.iterator();
        while (iterator.hasNext()) {
            Animal next = iterator.next();
            next.move();
            //但是如果需要调用子类的特有方法,还是需要强转!
            if (next instanceof Cat){
                Cat cat1=(Cat)next;
                cat1.catchMouse();
            }
            if (next instanceof Bird){
                Bird bird1=(Bird)next;
                bird1.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("鸟儿在飞翔");
    }
}


自定义泛型:

此时的test01在调用dosome方法时只能传入Integer类型

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:29:19  更:2021-07-31 16:30:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 21:23:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码