在严格的泛型代码里,带泛型声明的类总应该带着类型参数。但为了与老的Java代码保持一致,也允许在使用带泛型声明的类时不指定实际的类型。如果没有为这个泛型类指定实际的类型,此时被称作raw type(原始类型),默认是声明该泛型形参时指定的第一个上限类型。

当把一个具有泛型信息的对象赋给另一个没有泛型信息的变量时,所有在尖括号之间的类型信息都将被扔掉。比如一个 List 类型被转换为List,则该List对集合元素的类型检查变成了泛型参数的上限(即Object)。

上述规则即为泛型擦除,可以通过下面代码进一步理解泛型擦除:

List<String> list1 = ...;
List list2 = list1; // list2将元素当做Object处理

从逻辑上来看,List 是List的子类,如果直接把一个List对象赋给一个List对象应该引起编译错误,但实际上不会。对泛型而言,可以直接把一个List对象赋给一个 List 对象,编译器仅仅提示“未经检查的转换”

上述规则叫做泛型转换,可以通过下面代码进一步理解泛型转换:

List list1 = ...;
List<String> list2 = list1; // 编译时警告“未经检查的转换”

【介绍一下泛型擦除】什么是泛型擦除?相关推荐

  1. java什么是类型擦除_Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...

  2. Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...

  3. 描述java泛型引入原则_Java/泛型的类型擦除/README.md · oslo/LearningNotes - Gitee.com

    前言 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下 ...

  4. java 接口的泛型方法_Java泛型/泛型方法/通配符/泛型接口/泛型泛型擦出

    从JDK1.5以后引入了三大常用新特性:泛型.枚举(enum).注解(Annotation).其中JDK1.5中泛型是一件非常重要的实现技术,它可以帮助我们解决程序的参数转换问题.本文为大家详细介绍一 ...

  5. java中什么泛型_java中的泛型(一)

    在java中我们定义接口其实定义的是这个类的功能,在很多时候我们并不关心这个类的类型而是这个类的能力.泛型的出现让我们的代码和代码所能操作的类型不在绑定在一起,不仅可以复用代码降低耦合还可以提高代码的 ...

  6. java泛型常用特点_Java泛型详解

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. java泛型详解 1. 概述 泛型在 ...

  7. Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

    文章目录 泛型的概念 集合中使用泛型 自定义泛型结构 泛型在继承上的体现 通配符的使用 泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象,所以在JDK1.5之前只能把 ...

  8. java 怎么为泛型参数赋值_Java泛型讲解

    1. 概述在引入泛型之前,Java类型分为原始类型.复杂类型,其中复杂类型分为数组和类.引入范型后,一个复杂类型 就可以在细分成更多的类型. 例如原先的类型List,现在在细分成List, List等 ...

  9. java map 泛型 反射_java - 反射操作泛型

    反射操作泛型 Java的泛型采用的是泛型擦除的机制,泛型仅仅是给编译器javac使用的,为了确保数据的安全性和免去强制类型转换的问题,一旦编译完成,所有和泛型有关的类型将全部擦除. 为了通过反射操作这 ...

  10. .net java 泛型_Java高级特性泛型看这一篇就够了

    作者:qwer1030274531 出自:ITPUB博客 1.为什么我们需要泛型? 通过两段代码就可以知道为什么需要泛型 /*** * 没有泛型的时候实现加法 */public class NonGe ...

最新文章

  1. Android后台杀死系列之三:LowMemoryKiller原理(4.3-6.0)
  2. LeNet试验(四)使用shuffle label观察网络的记忆能力
  3. 选择“关机”还是“睡眠”?
  4. linux-dns的安装
  5. PhpStorm failed to transfer files by FTP 报错解决方法
  6. 「Python基础知识」Python的split方法如何使用
  7. 上海市消保委:春节长假期间 共受理消费者投诉4600件
  8. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
  9. 路由 RIP 协议 和 滞空路由
  10. matlab 做中值滤波时K = filter2(fspecial('average',3),J)/255,为什么要除以255
  11. LongAdder类学习笔记
  12. 红外视觉1:近红外与中远红外图像
  13. 端口扫描工具Namp
  14. 可以下载视频的手机浏览器
  15. java颜色识别_Java颜色检测
  16. 实例图解:摄影构图大实话
  17. 2021年最后一期 | 转录组分析的正确姿势你了解了吗?
  18. Swift 使用 UISlider
  19. openstack装配置 Neutron( 控制节点
  20. Java程序的执行方式

热门文章

  1. 应用在感应灯中的接近传感芯片
  2. 中国通信服务上半年经营收入实现人民币538.34亿元
  3. solaris truss使用
  4. 2022-2028年全球与中国巨磁电阻基器件(GMR)行业深度分析
  5. Windows10 安装NVIDIA、CUDA和cudnn注意事项(所踩的坑)
  6. AI时代来了,它会不会取代“程序猿”
  7. AtCoder - ABC 178 - C~F
  8. python开发师工资_【Python开发工程师工资|Python开发工程师待遇怎么样】-看准网...
  9. 8月不良与垃圾信息:涉嫌欺诈类违法短信占60.4%
  10. Pycharm安装模块