2016 - 2024

感恩一路有你

java泛型擦除机制 怎样理解java泛型中的擦除?

浏览量:1527 时间:2021-03-11 10:23:04 作者:admin

怎样理解java泛型中的擦除?

泛型是1.5中引入的一个新概念。它具有高度的安全性和易用性,因为不需要强制转换类型。因为泛型只在编译器中实现,并且虚拟机不识别泛型类项,所以有必要删除虚拟机中的泛型类型。也就是说,泛型在编译阶段使用,而泛型在运行阶段取消,即擦除。擦除是用父类替换泛型类型。例如,字符串成为对象。实际上,仍然使用强制类型的转换,但这是一种相对安全的转换,因为在编译阶段已经确保了数据的一致性。

究竟是.Net好还是Java好,欢迎大家发言,畅所欲言?

我选择dotnet,因为宇宙中有第一个ide-vs2019祝福,不接受驳斥。

Java为什么要有泛型?

Java中的泛型非常棒。这就是为什么我经常讨厌Java的原因之一。

让我们先谈谈泛型的主要功能:

1。加强类型安全。例如,如果定义了一个列表,那么只有string可以存储在其中,其他类型(从string派生的类型除外)是不允许的。类型安全应该反映在编译时和运行时。

2. 提高性能,减少类型转换和装箱次数。

让我们来谈谈Java泛型的奇妙之处:

1。Java泛型实现的原理称为类型擦除。无论代码中如何定义泛型,它们在编译后都会成为对象,因此在运行时无法实现类型安全。而且,java编译器不够聪明,很容易被欺骗。例如,调用第三方接口返回list,但实际得到的值可能与string无关。

2. 由于类型被删除,类型转换是不可避免的,所以使用泛型和非泛型不会改变性能。

为什么泛型类型只能引用类型,而不能是基本类型?

因为Java中的泛型是在编译时通过类型擦除来完成的,当泛型被类型擦除时,它们就变成了对象类型。但是对象类型不能引用int和double等基本类型,只能引用integer和double等类型。右

java泛型擦除机制 java泛型为什么要擦除 java 泛型擦除

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。