Java之泛型在使用过程全解析

 更新时间:2025年09月05日 16:37:21   作者:ByteBlossom  
这篇文章介绍了泛型的基本概念及其在Java中的应用,泛型通过统一类型参数消除了强转问题,广泛应用于集合类(如List、Set、Map)中,确保元素类型一致,文章还详细解释了泛型类、泛型方法、子类继承、类型限制(上限和下限)、泛型擦除以及桥接方法等关键概念

什么是泛型?

早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序并不安全。针对List、Set、Map等集合类型,它们对存储的元素类型是没有任何限制的。

假如向List中存储Dog类型的对象,但是有人把Cat对象也存储到这个List中了,那么在编译上是没有任何语法错误的。所有使用该泛型参数的地方都被统一化,保证类型一致。

如果未指定具体类型,默认是Object类型。集合体系中的所有类都增加了泛型,泛型也主要用在集合。

下面我们就针对泛型类、泛型方法、泛型类派生出的子类、类型通配符、泛型擦除、桥接方法等内容进行一一介绍。

泛型类

泛型类就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来

这样的话,用户明确了什么类型,该类就代表着什么类型,用户在使用的时候就不用担心强转的问题,和运行时转换异常的问题了,如下所示:

泛型方法

除了在类上使用泛型,我们可能仅仅在某个方法上需要使用泛型,外界仅仅是关心该方法,不关心类其他的属性,这样的话,我们在整个类上定义泛型,未免就有些大题小作了。那么此时,我们可以采用泛型方法。

泛型类派生出的子类

前面我们已经定义了泛型类,泛型类是拥有泛型这个特性的类,它本质上还是一个Java类,那么它就可以被继承或实现。这里分两种情况:

  • ①子类明确泛型类的类型参数变量

  • ②子类不明确泛型类的类型参数变量

我们创建一个Inter接口,在该接口上使用泛型,代码如下所示:

类型通配符

List<?>表示元素类型未知的List,它可以匹配任何类型的元素。

声明List<?>后,不能向集合中添加元素,因为无法确定集合的元素类型,唯一例外的是null。

泛型的上限和下限

泛型的上限:

格式:类型名称<?extends 类>对象名称

意义: 只能接收该类型及其子类

泛型的下限:

格式:类型名称<?super类>对象名称

意义:只能接收该类型及其父类型

类型擦除

泛型是提供给javac编译器使用的,它可以作为类型的限制,让编译器在源代码级别上,挡住非法类型的数据。

但是在JDK1.5之前没有泛型的概念,为了能够与之前版本代码兼容,编译器编译完带有泛型的java程序后,生成的class字节码文件中将不再带有泛型信息,这个过程称为“擦除”。

桥接方法的作用是什么?

桥接方法是jdk1.5引入泛型后,为使java泛型方法生成的字节码与jdk1.5版本之前的字节码兼容由编译器自动生成的。可用 method.isBridge() 判断method是否是桥接方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入理解Java的Spring框架中的IOC容器

    深入理解Java的Spring框架中的IOC容器

    IOC(Inversion of Control,控制反转)是Spring框架的核心,负责控制对象的生命周期与关系,接下来就让我们跟随文章来深入理解Java的Spring框架中的IOC容器:
    2016-07-07
  • 基于SpringBoot实现用户身份验证工具

    基于SpringBoot实现用户身份验证工具

    这篇文章主要介绍了基于SpringBoot实现的用户身份验证工具,非常不错,具有参考借鉴价值 ,需要的朋友可以参考下
    2018-04-04
  • Nginx启用压缩及开启gzip 压缩的方法

    Nginx启用压缩及开启gzip 压缩的方法

    这篇文章主要介绍了Nginx启用压缩及开启gzip 压缩的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Java实现JWT登录认证的示例代码

    Java实现JWT登录认证的示例代码

    Java中我们可以使用诸如JJWT这样的库来生成和验证JWT,本文主要介绍了Java实现JWT登录认证的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Spring Boot 集成 Mybatis Plus 自动填充字段的实例详解

    Spring Boot 集成 Mybatis Plus 自动填充字段的实例详解

    这篇文章主要介绍了Spring Boot 集成 Mybatis Plus 自动填充字段,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • springboot接口多实现类选择性注入解决方案

    springboot接口多实现类选择性注入解决方案

    这篇文章主要为大家介绍了springboot接口多实现类选择性注入解决方案的四种方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java设计模式之单例模式深入探索

    Java设计模式之单例模式深入探索

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建
    2021-10-10
  • Java数据结构之队列(动力节点Java学院整理)

    Java数据结构之队列(动力节点Java学院整理)

    队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 这篇文章详细给大家介绍了java数据结构之队列,感兴趣的朋友跟随小编一起学习吧
    2017-04-04
  • Java中@JSONField和@JsonProperty注解的用法及区别详解

    Java中@JSONField和@JsonProperty注解的用法及区别详解

    @JsonProperty和@JSONField注解都是为了解决obj转json字符串的时候,将java bean的属性名替换成目标属性名,下面这篇文章主要给大家介绍了关于Java中@JSONField和@JsonProperty注解的用法及区别的相关资料,需要的朋友可以参考下
    2024-06-06
  • Java中常用的四种引用类型详解

    Java中常用的四种引用类型详解

    Java中常用的四种引用类型,分别为,强引用、软引用、弱引用以及虚引用,这篇文章主要为大家介绍了这四种引用的用法,需要的可以参考一下
    2023-06-06

最新评论