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 @ 2018-12-04 11:15  光何  阅读(3752)  评论(0编辑  收藏  举报