java基础-泛型

概述

集合中的泛型

集合中存在什么样的安全隐患

  • 集合默认可以存储任意类型的对象。
  • 当在存储String的集合中,存储一个Integer类型,调用String类型的特有方法就会报错,导致程序崩溃。

集合中泛型的使用

  • 创建集合使用泛型指定集合只能存放的数据类型。
  • 遍历集合时不需要进行类型转换。

泛型的好处(优点)

  1. 增强了集合安全性,把运行时的错误转为编译时错误。
  2. 省去了类型强转的麻烦。

注意事项

  • 在泛型中没有多态的概念,要不左右两边的数据类型要保持一致,要不只写一边。推荐两边都写一样的。
  • 泛型不准使用基本数据类型,如果需要使用基本数据类型,要使用基本数据类型对应的包装类。
    在这里插入图片描述

泛型方法

需求

定义一个方法,方法可以接收任意类型的参数,方法返回值类型要和实际参数的类型一致。

泛型概述

  • 泛型变量可以理解为数据类型的占位符。
  • 泛型变量还可以理解为数据类型的变量。

泛型变量的命名规范

只要是一个合法的标识符就可以,一般使用一个大写字母表示

泛型描述
TType
EElement
Kkey
Vvalue

什么是泛型方法

  • 方法声明上使用了泛型变量的方法就是泛型方法。

泛型方法的格式

权限修饰符 <泛型变量> 返回值类型 方法名(参数列表) {}

泛型方法的须知

泛型变量的具体数据类型是什么取决于传递的参数类型。
在这里插入图片描述


泛型类

需求

  • 一个方法可以接收任意类型的数组,将数组元素进行反转
  • 一个方法可以接收任意类型的数组,将数组元素拼接成字符串返回

什么是泛型类

  • 在类上使用了泛型变量的类

泛型类的格式

class 类名<泛型变量>{}

泛型类的使用方式

  • 在创建泛型类对象时需要指定泛型变量的具体数据类型

     泛型类名<具体的数据类型> 变量名 = new 泛型类名<具体的数据类型>()
    
  • 如果在创建泛型类的对象时没有指定泛型变量的具体数据类型,则默认是Object

  • 静态方法上不能使用类定义的泛型变量,如果要使用,则需要将该方法定义泛型方法,由该方法自己定义泛型变量。
    在这里插入图片描述


泛型接口

需求

  • 增删改查用户信息

什么是泛型接口

  • 使用了泛型变量的接口就是泛型接口

泛型接口的格式

interface 接口名<泛型变量>{}

泛型接口的实现方式

  • 实现接口的同时指定泛型变量的具体数据类型。

    • 不够灵活,无法在创建对象时修改泛型变量的数据类型了。

        例:public class 类名 implements 接口名<Student>{}
      
  • 实现接口时不指定泛型的具体数据类型,由使用者在使用实现类时指定泛型变量的具体数据类型。(推荐使用)

    • 比较灵活,可以在创建对象时指定泛型变量的具体数据类型。

        例:public class 类名<T> implements 接口名<T>{}
      

在这里插入图片描述


泛型上下限

需求1

  • 定义一个方法可以接收任意类型的集合对象
  • 集合对象只能存储Integer或者是Integer的父类数据。

需求2

  • 定义一个方法可以接收任意类型的集合对象
  • 集合对象只能存储Number或者是Number的子类数据。

泛型的通配符

  • ? 匹配任意类型数据,不需要定义就可以使用。
    • 不能用来定义泛型方法和泛型类,泛型接口
    • 一般?不会单独使用,一般会结合泛型上下限使用

泛型下限

? super Integer  只能传递Integer或Integer的父类类型

泛型上限

? extends Number 只能传递Number或Number的子类类型

在这里插入图片描述


泛型数组

  • 在不确定数组的大小时使用

     int[] i=new int[...];
    
  • 完全可以用Arraylist取代

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值