Java 泛型的好处及实现原理
来源:互联网 发布:origin安装慢 mac 编辑:程序博客网 时间:2024/06/13 23:37
做笔试模拟题遇到这样一个问题,平时常用泛型,好处也差不多知道,但是让写出来就不大写的出来了,所以在这边整理一下,以后也可以回顾回顾
首先先总结一下好处:
简单易用 消除强制类型转换 保证类型安全
泛型好处:
泛型简单易用
类型安全 泛型的主要目标是实现java的类型安全。 泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型
消除了强制类型转换 使得代码可读性好,减少了很多出错的机会
Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型的实现原理
泛型的实现是靠类型擦除技术 类型擦除是在编译期完成的 也就是在编译期 编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的时候再强制类型转换为对应的类型。 在运行期间并没有泛型的任何信息,因此也没有优化。
泛型不考虑继承
List 类型 是否 可以 赋值为 List类型 ?
答案是不可以的
虽然说在赋值之后 String类型可以当做 Object类型使用 但是还是会出现问题
假设如下代码
List<String> strings = new ArrayList<>(); strings.add("哈哈哈哈"); List<Object> objs = new ArrayList<>(); objs = strings; //编译会出错,这里我们假设成功 Object aa = objs.get(0); //此处可以把String转换为Object使用 objs.add("呵呵呵呵"); objs.add(new Object()); //这时 objs中 既有 String 类型 也有 Object类型 objes.get(2); //这个时候 我们不会知道取出的到底是 Object对象 还是 String类型的对象 因此编译器为了防止出现这种情况 就提示编译出错
更详细的可以参考下面这篇文章:
java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
0 0
- Java 泛型的好处及实现原理
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- JAVA 泛型的好处
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- Java泛型的好处
- 函数索引的原理及好处
- 使用modelDriven的好处及原理
- java泛型的作用及实现原理
- java引入泛型的好处
- JAVA基础--泛型的好处
- Java中引入泛型的好处
- java网络编程(一)使用TCP协议完成客户端与服务端的数据传递
- Cocoapods 新手安装及使用教程
- android studio自动导包,自动删除没被应用调用的包
- crash日志处理daiyelang
- onunload、onbeforeunload事件详解
- Java 泛型的好处及实现原理
- 使用Maven自动部署插件
- 内向的人为什么朋友不多?
- 训练第三周之dp习题
- hive 设置map端内存
- 最小生成树
- JSP九大内置对象和四个作用域
- 用 Python 绘制音乐图谱
- SQL表连接查询(inner join、full join、left join、right join)