大家好,我是雄雄,今天给大家分享的是: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中的泛型类型擦除相关推荐

  1. java中的类型擦除type erasure

    文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...

  2. java 泛型对象实例化_在java中实例化泛型类型

    慕仙森 在您发布的代码中,T由于您不知道它是什么类型,因此无法创建实例:public class Abc{ public T getInstanceOfT() { // There is no way ...

  3. java type 类型,java中的泛型类型与Type接口

    假设我们定义了一个Room的类,表示一个房间 public classRoom(){ } 由于我们建造好房间是,不知道房间以后的用途,他可能用来住人,也有可能用来放货物,因此需要用到泛型.但是我们可能 ...

  4. Java 中,类、类对象、泛型之间的转换

    Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...

  5. 揭开Java 泛型类型擦除神秘面纱

    转载自   揭开Java 泛型类型擦除神秘面纱 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘 ...

  6. list 泛型_带你深挖Java泛型类型擦除以及类型擦除带来的问题

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:蜗牛大师 cnblogs.com/wuqinglong/p/9456193.html ...

  7. java 类型擦除_java中的类型擦除type erasure

    简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度. 泛型可以用在类和接口上,在集合类中非常常见.本文将会讲解泛型导致的 ...

  8. Java泛型的类型擦除

    写在前面:最近在看泛型,研究泛型的过程中,发现了一个比较令我意外的情况,Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节代码中是不包含泛型中的类型信息的.使用泛型的时候加上的类 ...

  9. Java语言 泛型 类型擦除

    初学者只要学习了"Java 编程简介学习路径"的第 20 单元,也可以学习本文. 此文将定义类型擦除,它与 Java 泛型的关系,以及未正确使用泛型时看到的一些神秘错误和警告消息( ...

最新文章

  1. eclipse 启动 找不到 JRE JDK的解决方法
  2. 解决sqlplus的segmentation fault或hang问题
  3. php 即时到账,paypal即时到账php实现代码
  4. 爱奇艺视频播放怎么开加速
  5. imail PHP,NT下基于邮件服务软件(IMAIL)的邮件发送程序–(本地版)-PHP教程,邮件处理...
  6. linux - tar压缩解压缩使用,快速记忆方法
  7. 怎样的学术导师是好导师(Nature)
  8. SQL Server DATEDIFF() 函数
  9. android pdf阅读器推荐,Android最强PDF阅读器 十款软件大PK
  10. Python爬虫入门之初遇lxml库
  11. 一封来信,你的一封来信,一封Ta的来信,爆火的匿名信H5源码功能开发和分析,表白祝福道歉短信发送系统
  12. 2016 server win 假死_Win7运行程序无缘无故发生假死现象五种解决方法
  13. 华为云迁移工具推荐最佳实践:物理服务器迁移到华为云
  14. android波纹动画,Android实现水波纹效果
  15. 个人管理 - 第四代时间管理
  16. 如何从0到1搭建电商促销系统
  17. 如何在Linux终端中复制和粘贴文本、文件和文件夹。
  18. CentOS 7 安装 OTRS工单提交跟踪系统
  19. Python-Dataframe使用已知数据填补空值
  20. 华旭金卡js调用身份证阅读器和易联众社保卡阅读器

热门文章

  1. Command(命令)--对象行为型模式
  2. LOOPS HDU - 3853(概率dp,期望)
  3. 数据结构与算法--代码完整性案例分析
  4. Redis持久化-深入理解AOF,RDB
  5. word List38
  6. 兰州大学第一届 飞马杯 ★★飞马祝福语★★ 线段树维护dp(动态dp)
  7. 【CTSC2010】珠宝商【后缀自动机】【点分治】【根号分治】
  8. [BeiJing2011][bzoj2460] 元素
  9. gym103117L. Spicy Restaurant
  10. P3293 [SCOI2016]美味