基础知识-Java泛型擦除(简洁明了)

基础知识-Java泛型擦除(简洁明了)0 概念 nbsp nbsp nbsp nbsp Java 泛型的参数只可以代表类 不能代表个别对象 由于 Java 泛型的类型参数之实际类型在编译时会被消除 所以无法在运行时得知其类型参数的类型 Java 编译器在编译泛型时会自动加入类型转换的编码 故运行速度不会因为使用泛型而加快 百度百科 nbsp nbsp nbsp nbsp 泛型是 JavaSE1 5 的新特性 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 这种参数类型可以用在类

0.概念

    Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。

—百度百科

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。

    泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。

—百度百科

  • 若泛型类型没有指定具体类型,用Object作为原始类型;
  • 若有限定类型< T exnteds XClass >,使用XClass作为原始类型;
  • 若有多个限定< T exnteds XClass1 & XClass2 >,使用第一个边界类型XClass1作为原始类型;

1.泛型擦除的体现

基础知识-Java泛型擦除(简洁明了)

在写代码时,无法把一个 String 类型的实例加到 ArrayList

中,因为ArrayList

和 ArrayList

在编译的时候是完全不同的类型,但是运行结果却是true。这就Java泛型的类型擦除造成的


基础知识-Java泛型擦除(简洁明了)

因为不管是 ArrayList

还是 ArrayList

,在编译完成后都会被编译器擦除成了 ArrayList。




Java 泛型擦除是 Java 泛型中的一个重要特性,其目的是避免过多的创建类而造成的运行时的过度消耗。所以,想 ArrayList

和 ArrayList

这两个实例,其类实例是同一个。




2.把Activity对象放进List

集合里

当我们正常的将 Activity 对象放进 List

list = new ArrayList<>( ) 这样的集合去,会报一个错:



基础知识-Java泛型擦除(简洁明了)

通过泛型擦除的体现已经知道ArrayList

(或者ArrayList

)编译后都是java.util.ArrayList,泛型的约束是在编译时约束的,真正运行的 class 是没有泛型约束的。所以只要在运行时将 Activity 对象加入List

中就可以了:





基础知识-Java泛型擦除(简洁明了)

参考资料:

http://www.iteye.com/news/32333


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176887.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:47
下一篇 2026年3月26日 下午8:48


相关推荐

  • 安装anaconda和pycharm_anaconda安装pycharm

    安装anaconda和pycharm_anaconda安装pycharm目标:实现pycharm上操作Anaconda环境:系统:window7pycharm:2019步骤:1.下载:如果打算安装Anaconda,需要卸载之前安装的Python(如果不想卸载,参考博客,不过这个实在有点长,我没看完都),因为Anaconda是一个集成环境,所以是自带Python的,下载Anaconda,这个是官网:如图:根据电脑型号,选择版本,这里建议选择3.x…

    2022年8月27日
    8
  • 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」

    基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」语音识别智能分类垃圾桶基本介绍器件51单片机LD3320语音模块SYN6288语音合成SG90舵机(4个)usb-ttl模块垃圾桶四个(4个)面包板(建议用)实现思路与接线实现流程图接线呈现图代码编写语音模块(部分代码)语音模块串口调试结果51单片机代码(部分代码 )项目展示基本介绍这个一个基于51单片机做的一个语音识别分类智能垃圾桶,通过我们说话来对垃圾词语进行分类。比如:垃圾桶(一级指令)易拉罐(垃圾词语),我们通过说话说出关键字让语音模块接收到——语音模块通过串口发指令给51单片机,针对

    2022年6月26日
    30
  • 深入理解String、StringBuffer和StringBuilder

    深入理解String、StringBuffer和StringBuilder本文主要针对面试中经常被问到的 String 的热点 难点进行深入分析 祝你备战秋招 直通 BAT

    2026年3月17日
    1
  • Android布局详解

    Android布局详解Android六大基本布局分别是:线性布局LinearLayout、相对布局RelativeLayout、帧布局FrameLayout、表格布局TableLayout、网格布局GridLayout。其中,表格布局是线性布局的子类。网格布局是android4.0后新增的布局。普通视图还是布局都继承自View,其中ViewGroup就是所有布局的父类,ViewGroup继承自View…

    2022年6月2日
    39
  • linux桌面系统 9,红旗Linux系统RedFlag Linux Desktop 9.0安装教程

    linux桌面系统 9,红旗Linux系统RedFlag Linux Desktop 9.0安装教程以下分享红旗Linux操作系统RedFlagLinuxDesktop9.0安装教程,你可以用Vmware、VirtualBox虚拟机、硬盘、U盘、光盘的方式来安装。本文以光盘的方式来演示安装RedFlagLinuxDesktop9.0全过程。安装RedFlagLinuxDesktop9.0至少需要如下基本硬件配置:1.Intel或AMDCPU,推荐使用2GB以上内存。2.最少…

    2022年8月20日
    10
  • 嘘…偷偷教你破解“朋友圈三天可见”「建议收藏」

    嘘…偷偷教你破解“朋友圈三天可见”「建议收藏」点击上方[全栈开发者社区]→右上角[…]→[设为星标⭐]在微信公开课上,腾讯高级执行副总裁、微信事业群总裁张小龙说:朋友圈状态设置三天可见的人数超过了一亿人,这个开关是微信里使用率最…

    2022年4月28日
    98

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号