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

060_泛型擦除与边界限定

一、泛型擦除概述

1.1 定义与核心原理

泛型擦除是Java泛型实现的重要特性,指在编译阶段将泛型类型信息(类型参数)从字节码中移除的过程。Java的泛型是“编译期语法糖”,在运行时不保留泛型类型参数,所有泛型类型都会被转换为原始类型(Raw Type)。

核心原理:

  • 编译时,编译器会检查泛型类型的使用是否合法(如类型匹配、边界约束)。
  • 编译后,字节码中不再包含泛型类型参数,统一替换为其原始类型(无泛型的基础类型)。
  • 运行时,虚拟机无法区分Container和Container,两者都被视为Container类型。

1.2 泛型擦除示例

1.2.1 泛型类的擦除

// 编译前:泛型类
public class Container<T> {private T data;public T getData() { return data; }public void setData(T data) { this.data = data; }
}// 编译后:泛型擦除为原始类型(T被替换为Object)
public class Container {private Object data;public Object getData() { return data; }public void setData(Object data) { this.data = data; }
}

1.2.2 带边界的泛型类擦除

// 编译前:带上限的泛型类
public class NumberContainer<T extends Number> {private T data;public T getData() { return data; }
}// 编译后:T被替换为上限类型Number
public class NumberContainer {private Number data;public Number getData() { return data; 
http://www.xdnf.cn/news/16305.html

相关文章:

  • [2025CVPR:图象合成、生成方向]WF-VAE:通过小波驱动的能量流增强视频 VAE 的潜在视频扩散模型
  • 嵌入式ADC和DMA
  • kafka的部署和jmeter连接kafka
  • 守护汽车“空中升级“:基于HSM/KMS的安全OTA固件签名与验证方案
  • JavaScript 立即执行函数(IIFE)运行时行为分析笔记
  • 建筑施工场景下漏检率↓76%!陌讯多模态融合算法在工程安全监控的落地实践
  • 上证50指数分红和股指期货有什么关系?
  • Sklearn 机器学习 数值指标 entropy熵函数
  • Qt 与 WebService 交互开发
  • 配置nodejs
  • 【CTF-WEB-SQL】SQL注入基本流程-错误注入(sql-labs的Less5)(updatexml)
  • DOM元素添加技巧全解析
  • 如果在分支A上修改了内容,想要提交更新内容的话,如何与develop上的主分支的最新的代码拉齐
  • 面试问题总结——关于OpenCV(二)
  • GStreamer与OpenCV集成
  • 网络基础19--OSPF路由业务多区域
  • 解决VSCode中Github Copilot无法登陆的问题
  • HTTPS的基本理解以及加密流程
  • 掌握JavaScript函数封装与作用域
  • 学习随笔录
  • C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
  • 达梦[-2894]:间隔表达式与分区列类型不匹配
  • [硬件电路-93]:模拟器件 - 晶体管的静态工作点,让晶体管工作在其放大电路舞台的中央!!!
  • MyBatis Plus 对数据表常用注解
  • ​机器学习从入门到实践:算法、特征工程与模型评估详解
  • 计算机中的单位(详细易懂)
  • 关于数据库表id自增问题
  • MySQL存储引擎深度解析与实战指南
  • 告别虚函数性能焦虑:深入剖析C++多态的现代设计模式
  • 数组相关学习