Java泛型原理、类型擦除
注意
泛型不能使用在静态属性上
泛型可以用在接口、抽象类、普通类上
泛型方法
泛型方法可以定义在非泛型类中,这个方法可以是静态方法或者成员方法;
public class Method {//泛型方法,是在返回类型前面加上<>public static <T> void say(T t){System.out.println(t);}public <T> T test(T x){//有返回值的泛型方法return x;}
}
类型擦除(重点)
https://www.jianshu.com/p/36356dba3ee9
List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();System.out.println(l1.getClass() == l2.getClass());//输出true,因为类型擦除,最终都是Object
泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。
code 1:
}public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("name", "hollis");map.put("age", "22");System.out.println(map.get("name"));System.out.println(map.get("age"));
}
反编译后的code 1:
}public static void main(String[] args) {Map map = new HashMap();map.put("name", "hollis");map.put("age", "22");System.out.println((String) map.get("name"));System.out.println((String) map.get("age"));
}
发现泛型都不见了,程序又变回了Java泛型出现之前的写法,泛型类型都变回了原生类型,
Java泛型原理、类型擦除相关推荐
- Java泛型:类型擦除
前情回顾 Java泛型:泛型类.泛型接口和泛型方法 类型擦除 代码片段一 1 2 3 4 5 6 7 Class c1 = new ArrayList<Integer>().getClas ...
- java 泛型和类型擦除_关于Java泛型和擦除
java 泛型和类型擦除 "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所 ...
- Java泛型的类型擦除
写在前面:最近在看泛型,研究泛型的过程中,发现了一个比较令我意外的情况,Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节代码中是不包含泛型中的类型信息的.使用泛型的时候加上的类 ...
- Java泛型与类型擦除--ImportNew
本文由 ImportNew - 伍翀 翻译自 On Java Generics and Erasure.欢迎加入翻译小组.转载请参见文章末尾的要求. "编译器会进行泛型擦除"是一个 ...
- 描述java泛型引入原则_Java/泛型的类型擦除/README.md · oslo/LearningNotes - Gitee.com
前言 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下 ...
- java object toarray_java从toArray返回Object[]到泛型的类型擦除
在将ArrayList等Collection转为数组时,函数的返回值并不是泛型类型的数组,而是Object[].刚好最近翻了一遍<java核心技术>,以及参考<Think in Ja ...
- java中的类型擦除type erasure
文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...
- java什么是类型擦除_Java 泛型,你了解类型擦除吗?
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- Java基础篇:泛型与类型擦除
一.什么是泛型: 泛型的本质是 参数化类型,也就是说 将所操作的数据类型 指定为一个参数,在不创建新类的情况下,通过参数来指定所要操作的具体类型(类似于方法中的变量参数,此时类型也定义成参数形式),也 ...
- java 泛型 擦除_Java泛型和类型擦除
一 前言:初识泛型 废话不说,先来看一段代码: public class Holder { private Object data; public Holder(Object data ){ this ...
最新文章
- 静态Web服务器-返回固定页面数据
- python怎么下载-下载 python
- 获取不到app.config里面的数据库连接字符串的解决方法
- C Builder中如何利用消息
- 用户、组织结构、功能菜单、权限分配设计
- HTML元素-META全集
- [转载] 七龙珠第一部——第068话 最后的龙珠
- KDD 2022论文合集(持续更新中)
- 林达华——我的PhD生活
- 【刷题】【2.两数之和绝对值最小】
- hoolilaw解读:在美国一不小心就犯法 一言不合就法庭见
- 美国签证和加拿大签证申请及自驾游攻略合辑
- linux嵌入式系统开发心得,嵌入式学习牛人心得
- 数字图像处理风格化效果——马赛克处理
- 模型选择准则之AIC和BIC
- 浙大版《C语言程序设计(第3版)》题目集习题5-6 使用函数输出水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 ​3 ​​ +
- 微信服务号与订阅号的主要区别是什么?
- 美国房价仍在上涨,但购房需求今年首次低于2020年水平
- ARP家族--ARP,代理ARP,Gratuitous ARP
- 笔记: 计算天区面积的方法
热门文章
- pytorch 网络搭建简要步骤
- DRL实战 : N-Armed Bandits问题
- 容器技术Docker K8s 4 容器编排技术基础-Kubernetes
- 2021-09-06146. LRU 缓存机制 哈希表
- Python数据结构,线性结构:栈、队列、双端队列、列表
- The evolved Transformer,进化的变换器
- 【机器学习系列】EM算法第三讲:由Jensen Inequality推导EM算法
- 冒泡、选择、快速、归并、堆排序算法 python实现
- 现代通信原理6.1 常规调幅调制(AM)与抑制载波双边带(DSB-SC)调制
- 2020_0527_近期思考