栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

76-Java的泛型深入、自定义泛型、泛型通配符、上下限

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

76-Java的泛型深入、自定义泛型、泛型通配符、上下限

泛型深入 一、泛型的概述和优势 1、概述
  • 泛型:是JDK5中引入的特性,可以在编译阶约束操作的数据类型,并进行检查。

2、格式
<数据类型>
  • 注意:泛型仅支持引用数据类型。

  • 集合体系的全部接口和实现类都是支持泛型的使用。



3、好处、优势
  • 统一数据类型。
  • 把运行期间的问题提到了编译期间,避免了强制类型转换可能出现的异常,因为编译阶段类型就能确定下来了。
package com.app.d7_genericity;

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


public class GenericityDemo1 {
    public static void main(String[] args) {
        // 不用泛型,当你在运行期间,会出现强制类型转换的bug
        List list1 = new ArrayList<>();
        list1.add("Java");
        list1.add("赵敏");
        list1.add(34.6);
        list1.add(false);
        list1.add(343);
        System.out.println("list1 = " + list1);

        


        // 使用泛型,在编译期间已经确定了数据类型,后面需要对数据做处理的话,就不会出现强制类型转换这样的操作了
        // List list2 = new ArrayList<>(); // 报错!因为泛型仅支持引用数据类型
        List list2 = new ArrayList<>();
        list2.add(343);
        list2.add(33);
        System.out.println("list2 = " + list2);
        // 报错!因为此集合需要整数类型的数据,给的却是字符串类型
        // list2.add("Java");
        // list2.add("赵敏");

        // 报错!因为此集合需要整数类型的数据,给的却是浮点类型
        // list2.add(34.6);

        // 报错!因为此集合需要整数类型的数据,给的却是布尔类型
        // list2.add(false);


        System.out.println("-----------------------------------");
        // 想使用泛型,但是又想存储任意类型的数据
        List list3 = new ArrayList<>();
        list3.add("Java");
        list3.add("赵敏");
        list3.add(34.6);
        list3.add(false);
        list3.add(343);
        System.out.println("list3 = " + list3);
    }
}
 
list1 = [Java, 赵敏, 34.6, false, 343]
list2 = [343, 33]
-----------------------------------
list3 = [Java, 赵敏, 34.6, false, 343]

Process finished with exit code 0

4、泛型的用武之地
  • 类后面——>泛型类。
  • 方法申明上——>泛型方法。
  • 接口后面——>泛型接口。



二、自定义泛型类 1、概述
  • 定义类的同时定义了泛型的类,就是泛型类。

2、格式
修饰符 class 类名<泛型变量>{}
  • 范例:
public class MyArrayList {
    
}
  • 此处泛型变量T可以随便写为任意标识,常见的如E、T、K、V等。

3、作用
  • 编译阶段可以指定数据类型,类似于泛型在集合中的作用。

4、案例导学