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

javaSE.类型擦除机制

泛型是如何实现的,程序编译之后的样子是什么样的?

一个泛型类型编译之后实际上会直接使用默认的类型👇

我们给类型变量设定了上界,那么从默认类型变成上界定义的类型👇👇👇

编译之后:👇

泛型仅仅在编译阶段进行类型检查,当程序在运行时,并不会真的去检查对应类型,所以哪怕我们不去指定类型也可以直接使用👇

使用的时原始上界Number👇

可以传入Number, 11.1👇 

若是上界Object👇👇

默认为Object👇

可传入String👇

在指定类型时,编译才会进行检查👇否则就是默认原始类型👆

由于类型擦除,编译后的代码时进行了强制类型转换的👇

public static void main(String[] args) {A<String> a = new B();String i = a.test("10");
}👇编译之后public static void main(String[] args) {A a = new B();String i = (String) a.test("10");
}

为什么参数类型不同可以重写呢?👇

编译器帮助我们生成了一个桥接方法用于支持重写,类似于方法重载。

类型擦除机制其实就是为了方便使用后面的集合类(不然每次都要强制类型转换)同时为了向下兼容采取的方案。因此,泛型的使用会有一些限制。

首先,在进行类型判断时,不允许使用泛型,只能使用原始类型:

http://www.xdnf.cn/news/267.html

相关文章:

  • k8s教程3:Kubernetes应用的部署和管理
  • Foundation Agent:深度赋能AI4DATA
  • 宿舍DIY迷你空调实施方案
  • 敏捷开发管理流程
  • Qt 创建QWidget的界面库(DLL)
  • 论坛测试报告
  • redis不要以root权限启动(linux)
  • c加加重点学习之day03
  • 仿腾讯会议项目开发——网络嵌入
  • 软件测试之接口测试详解
  • 开源AI守护每一杯------奶茶咖啡店视频安全系统的未来之力
  • SQL-子查询
  • iPaaS应用集成平台在交通运输行业有哪些应用场景
  • (51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)
  • 643SJBHflash个人网站
  • 【Python爬虫基础篇】--2.模块解析
  • AI时代的泛安全新范式:Kaamel安全智能体解决方案
  • 数据库被渗透怎么办?WAF能解决数据库安全问题吗?
  • 织梦DedeCMS首页列表页调用会员信息的SQL标签
  • 2025年人工智能指数报告(斯坦福)重点整理
  • 静态时序分析STA——8.2 时序检查(保持时间检查)
  • 第十四节:实战场景-何实现全局状态管理?
  • 【python】编码、输入、数据类型
  • CCF CSP 第36次(2024.12)(2_梦境巡查_C++)
  • 本地部署ai图片转生成视频,一键运行包的制作教程。
  • 调制器的噪声传递函数(NTF)的零极点配置对其性能的影响
  • L38.【LeetCode题解】四数之和(双指针思想) 从汇编角度分析报错原因
  • C++11中的std::condition_variable
  • 深度学习中的概念——元素积(哈达玛积)
  • Skipped breakpoint at ... because of stepping in another thread问题分析