关于java ArrList中的泛型数组
2021/5/17 20:55:56
本文主要是介绍关于java ArrList中的泛型数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在java中泛型具有泛型擦除的特质,在通过编译之后java将所有对象视为object类型,而对于Java的数组来说,他必须知道它持有的所有对象的具体类型,而泛型的这种运行时擦除机制违反了数组安全检查的原则。比如像下面的代码是报错的:
但是我们可以先定义一个object类型的数组,再对引用的强制转换将其转为泛型数组
这样虽然没有错误,但是似乎是没有意义的,因为所有Obiect的子类换句话说就是除了基本类型都可以存入这个数组中,没有实际的作用。
于是我们可以定义一个带有泛型的类
public class FanXing<T> { private T arr[]; private int size; public FanXing(int size) { this.size=0; arr=(T[]) new Object[size]; } public void add(T num) { arr[size]=num; size++; } }
下面是对这个类的调用
在类的实例化过程中我们可以定义泛型的类型,然后数组就强制转化为String类型的引用,往数组添加内容时发现,我们只可以添加String类型,而添加其他基本类型或者对象类型时就会报错。但是我们需要注意的是像开始所说的一样,我们的编译器只是卡了引用被强制转换的类型这一关,但是在编译通过后,java只知道他是一个Object类型而已。
观察源码后发现,实际上在Java原生的ArrayList类中,也是这样使用ArrayList数组的,使用类似的操作也会出现报错信息。
PS:由于本人是初学者,以上只是在学习过程中的个人总结和思考,参考价值不大,如有错误,希望能够指正。
这篇关于关于java ArrList中的泛型数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器