java中的泛型类型擦除
大家好,我是雄雄,今天给大家分享的是:java的泛型是类型擦除的。
写在前面
那么何为类型擦除?类型擦除就是在编译期明确去掉所编程序的类型系统。啥?还不明白?以java泛型为例,java的泛型在编译期有效,在运行期被删除,下面我们来具体的看看。
先举例一段代码:
public class Test {public void method(String [] strs){}public void method(int [] ints){}public void listmethod(List<String> strList){}public void listmethod(List<Integer> intList){}}
以上这段代码很简单,我们写了4个方法,其中method的两个方法的参数类型不一样,listmethod方法的参数类型也不一样,理论上来说,method的两个方法和listmethod的两个方法都可以构成方法重载,但是,这样写对吗?
这样写编译无法通过。报错的地方就在listmethod方法上,报错信息为:
这个错误的意思就是,listmethod<List<String>方法在编译时擦除类型后为listmethod<List<E>与另一个方法重复(listmethod<List<Integer>),也就是说方法名一样,注意这里的一样是指方法名和参数都一样,故报错。
这就是java泛型擦除类型引起的问题,在编译后所有的泛型都会做出相应的转化,可以总结为如下转换规则:
List<String>、List<Integer>、List<T>擦除后的类型为List。
List<String[]>擦除后的类型为List[]。
List<? extends E>、List<? superE>擦除后的类型为List<E>。
List<T extends Serializable &Cloneable>擦除后的类型为List< Serializable >
看完以上规则之后你是否明白了上面代码为什么会报编译错误呢?
辣椒酱了哈,年底冲销量了,满80减15了,单件商品下单立减1.88元,时间有限!
本文参考自:《编写高质量代码 改善java程序的151个建议》
作者:秦小波
往期精彩
投资理财要趁早,基金风险是最小!
2021-01-10
一百馒头一百僧,大僧三个更无争,小僧三人分一个,大小和尚得几丁?
2021-01-09
你们好好的学,回头教教我~
2021-01-08
辣椒酱中奖说明~
2021-01-07
点分享
点点赞
点在看
java中的泛型类型擦除相关推荐
- java中的类型擦除type erasure
文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...
- java 泛型对象实例化_在java中实例化泛型类型
慕仙森 在您发布的代码中,T由于您不知道它是什么类型,因此无法创建实例:public class Abc{ public T getInstanceOfT() { // There is no way ...
- java type 类型,java中的泛型类型与Type接口
假设我们定义了一个Room的类,表示一个房间 public classRoom(){ } 由于我们建造好房间是,不知道房间以后的用途,他可能用来住人,也有可能用来放货物,因此需要用到泛型.但是我们可能 ...
- Java 中,类、类对象、泛型之间的转换
Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...
- 揭开Java 泛型类型擦除神秘面纱
转载自 揭开Java 泛型类型擦除神秘面纱 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘 ...
- list 泛型_带你深挖Java泛型类型擦除以及类型擦除带来的问题
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:蜗牛大师 cnblogs.com/wuqinglong/p/9456193.html ...
- java 类型擦除_java中的类型擦除type erasure
简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度. 泛型可以用在类和接口上,在集合类中非常常见.本文将会讲解泛型导致的 ...
- Java泛型的类型擦除
写在前面:最近在看泛型,研究泛型的过程中,发现了一个比较令我意外的情况,Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节代码中是不包含泛型中的类型信息的.使用泛型的时候加上的类 ...
- Java语言 泛型 类型擦除
初学者只要学习了"Java 编程简介学习路径"的第 20 单元,也可以学习本文. 此文将定义类型擦除,它与 Java 泛型的关系,以及未正确使用泛型时看到的一些神秘错误和警告消息( ...
最新文章
- eclipse 启动 找不到 JRE JDK的解决方法
- 解决sqlplus的segmentation fault或hang问题
- php 即时到账,paypal即时到账php实现代码
- 爱奇艺视频播放怎么开加速
- imail PHP,NT下基于邮件服务软件(IMAIL)的邮件发送程序–(本地版)-PHP教程,邮件处理...
- linux - tar压缩解压缩使用,快速记忆方法
- 怎样的学术导师是好导师(Nature)
- SQL Server DATEDIFF() 函数
- android pdf阅读器推荐,Android最强PDF阅读器 十款软件大PK
- Python爬虫入门之初遇lxml库
- 一封来信,你的一封来信,一封Ta的来信,爆火的匿名信H5源码功能开发和分析,表白祝福道歉短信发送系统
- 2016 server win 假死_Win7运行程序无缘无故发生假死现象五种解决方法
- 华为云迁移工具推荐最佳实践:物理服务器迁移到华为云
- android波纹动画,Android实现水波纹效果
- 个人管理 - 第四代时间管理
- 如何从0到1搭建电商促销系统
- 如何在Linux终端中复制和粘贴文本、文件和文件夹。
- CentOS 7 安装 OTRS工单提交跟踪系统
- Python-Dataframe使用已知数据填补空值
- 华旭金卡js调用身份证阅读器和易联众社保卡阅读器
热门文章
- Command(命令)--对象行为型模式
- LOOPS HDU - 3853(概率dp,期望)
- 数据结构与算法--代码完整性案例分析
- Redis持久化-深入理解AOF,RDB
- word List38
- 兰州大学第一届 飞马杯 ★★飞马祝福语★★ 线段树维护dp(动态dp)
- 【CTSC2010】珠宝商【后缀自动机】【点分治】【根号分治】
- [BeiJing2011][bzoj2460] 元素
- gym103117L. Spicy Restaurant
- P3293 [SCOI2016]美味