Java集合转有类型的数组之toArray(T[] a)

  在java变成中慎用强制类型转换,尽量使用类自带的转换函数或泛型。先看一行代码

错误方法:

1 String[] array= (String[]) list.toArray();

  如果list中存放的是string类型,上面的代码看上去似乎没有问题,但是运行就会报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

  java中的强制类型转换只是针对单个对象的,想要偷懒将整个数组转换成另外一种类型的数组是不行的,这和数组初始化时需要一个个来也是类似的。

  那么问题来了,我们经常需要将集合转换成有类型的数组,不能对数组整体进行强转,难道要一个一个遍历一遍转换?

  当然不是,jdk集合除了提供toArray()方法,还提供了一个toArray(T[] a)方法,比较low的码农一般不知道这个也没怎么研究过,甚至去遍历一遍一个一个转。

使用方法:

1 String[] array = new String[list.size()];
2 list.toArray(array);

或:

1 String[] array= list.toArray(new String[list.size()]);  
posted @   光何  阅读(3774)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2016-12-04 整合Struts2、Hibernate、Spring
2016-12-04 声明式事务-整合Spring、Hibernate
2016-12-04 Spring面向切面编程(AOP)方式二
2016-12-04 执行HQL语句出现Remember that ordinal parameters are 1-based
2016-12-04 eclipse快捷键Alt + / 失效

点击右上角即可分享
微信分享提示