什么是泛型擦除后保留的原始类型

简介: 原始类型是泛型擦除后生成的字节码中的实际类型。定义泛型类时,若无限定则类型变量被Object替换;若有上界限定(如T extends Comparable),则擦除为该限定类型。例如,Pair<T> 擦除为Object,而Pair<T extends Comparable> 擦除为Comparable。

原始类型 就是擦除去了泛型信息,最后在字节码中的类型变量的真正类型,无论何时定义一个泛型,相应的原始类型都会被自动提供,类型变量擦除,并使用其限定类型(无限定的变量用Object)替换。举例说明
class Pair {
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
其对应的原始类型就是
class Pair {
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
但如果该类的定义有限定,比如继承了,那么就会产生变化:
public class Pair {}
此时原始类型就是Comparable,而不再是Object

相关文章
|
4月前
|
网络协议 网络安全 网络虚拟化
DNS 隧道
DNS隧道利用DNS协议在53端口传输非DNS流量,如HTTP数据。虽有合法用途,但常被攻击者用于恶意目的,伪装出站流量,窃取数据或建立命令与控制通道,隐蔽性强,威胁网络安全。
|
4月前
|
安全 小程序 JavaScript
OAuth2.0四种授权模式
OAuth2四种授权模式简介:授权码模式最安全,适用于第三方登录;简化模式适用于无后端的应用;密码模式需高度信任;客户端模式用于服务间调用,无需用户参与。
|
4月前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba诞生
阿里基于Spring Cloud打造Alibaba生态,推出Nacos、Sentinel、Seata等核心组件,覆盖服务发现、配置管理、流量控制与分布式事务,形成完整微服务解决方案,获Spring官方认可,推动Spring Cloud在企业级场景高效落地。
|
4月前
|
数据安全/隐私保护
RBAC权限模型
RBAC(基于角色的访问控制)通过角色管理权限,实现用户与权限的间接关联,提升系统安全性与管理效率。其三大原则:最小权限、职责分离、数据抽象,使权限分配更清晰、灵活,广泛应用于现代权限管理系统中。
|
4月前
|
运维 开发工具 git
生产环境缺陷管理
在大型团队中,多分支开发易导致bug修复遗漏,引发严重生产事故。我们基于go-git打造通用工具git-poison,实现跨分支bug追溯与自动化管理,降低对人工沟通的依赖,提升协作效率与代码安全性,避免“重复踩坑”。
|
4月前
|
NoSQL MongoDB
文档的分页查询
MongoDB提供统计、分页与排序查询功能:`count()`统计记录数,支持条件筛选;`limit()`限制返回条数,`skip()`跳过指定数量,实现分页;`sort()`按字段升序(1)或降序(-1)排序。三者联合使用时,执行顺序为sort→skip→limit。
|
4月前
|
SQL 安全 Java
强化 SQL 语句
应结合参数化查询、预编译语句等技术防止SQL注入,严格校验输入并转义特殊字符。错误信息需捕获并屏蔽,避免泄露数据库细节,辅助攻击者。预编译语句若未正确使用绑定变量,仍存在风险。
|
4月前
|
Cloud Native 微服务
SpringCloud特点
一款优秀的微服务解决方案,遵循“约定大于配置”理念,组件丰富、功能齐全,支持灵活扩展与开箱即用,启动迅速,完美适配云原生架构,助力应用高效部署于云环境。
|
4月前
|
SQL 安全 JavaScript
黑名单和白名单
应用内防御SQL注入主要有黑名单和白名单两种输入验证方法。黑名单过滤已知恶意字符,易实现但防护有限;白名单仅允许预定义的合法字符,更安全有效。应根据输入类型定制规则,并结合警报机制应对异常输入,确保及时发现潜在攻击或误判。客户端验证可提升体验,但不可依赖,服务端验证必不可少。
|
4月前
|
SQL 存储 安全
盲注和二阶 SQL 注入
SQL盲注通过延迟响应等间接方式探测数据库漏洞,获取敏感信息或篡改数据。攻击者利用sleep()函数或耗时操作判断语句执行情况。二阶SQL注入则利用存储后二次执行的数据,隐蔽性强,需结合参数化查询与输入验证防范。