当前位置: 首页 > article >正文

【Java 问题】基础——泛型

接上文

泛型

  • 47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

什么是泛型?

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

在这里插入图片描述
泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。

在这里插入图片描述
1.泛型类:

在这里插入图片描述
2.泛型接口 :

在这里插入图片描述
3. 泛型方法
在这里插入图片描述

泛型常用的通配符有哪些?

常用的通配符为: T,E,K,V,?

  • ? 表示不确定的 java 类型
  • T (type) 表示具体的一个 java 类型
  • K V (key value) 分别代表 java 键值中的 Key Value
  • E (element) 代表 Element

什么是泛型擦除?

所谓的泛型擦除,官方名叫“类型擦除”。

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的类型信息都会被擦掉。

也就是说,在运行的时候是没有泛型的。

例如这段代码,往一群猫里放条狗:

在这里插入图片描述
因为Java的范型只存在于源码里,编译的时候给你静态地检查一下范型类型是否正确,而到了运行时就不检查了。上面这段代码在JRE(Java运行环境)看来和下面这段没区别:

在这里插入图片描述
为什么要类型擦除呢?

主要是为了向下兼容,因为JDK5之前是没有泛型的,为了让JVM保持向下兼容,就出了类型擦除这个策略。


http://www.kler.cn/news/337740.html

相关文章:

  • 视频加字幕用什么软件最快?12款工具快速添加字幕!
  • 算法知识点————贪心
  • 【Python进阶】Python中的操作系统接口:使用os模块进行系统调用
  • Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“
  • 杂谈c语言——6.浮点数的存储
  • Nginx06-静态资源部署
  • DTO(数据传输对象)
  • 硬件电路中高频信号终端电阻作用
  • 服务器虚拟化的详细学习顺序
  • pygame--超级马里奥(万字详细版)
  • STM32外设简介
  • expressjs 中的mysql.createConnection,execute 怎么使用
  • MATLAB与R语言在建模中的合作与应用(下篇)
  • OpenAI在周四推出了一种与ChatGPT互动的新方式——一种名为“Canvas”的界面
  • Go编译为可执行文件
  • 22.第二阶段x86游戏实战2-背包遍历REP指令详解
  • php反序列化逃逸例题两道
  • 【Linux】wsl虚拟机时间和实际时间不符合
  • 基于SpringBoot的诗词学习网站的设计与实现
  • 二分查找算法专题(1)