将字符串列表转换为字符串数组 - (String [])list.toArray()和list.toArray(new String [0])之间的区别

Sco*_*ica 3 java gwt

我有一个List<String>Java,并希望将其转换为数组.

起初,我使用了toArray语法,它将一个数组作为输入,但后来切换到无参数版本,即我从:

String[] myArray = myList.toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)

String[] myArray = (String[])myList.toArray();
Run Code Online (Sandbox Code Playgroud)

阅读文档(我的基础类型是ArrayList),似乎功能应该是相同的.我认为后一版本效率更高,因为它不需要分配和收集一个空数组.我错过了任何微妙的差异吗?

(注意:我问的原因是GWT确实以不同的方式处理语句.后者给出了动态转换错误而前者没有.我只是想知道这是否是我如何使用GWT的一个细微差别我如何使用Java的细微差别.)

谢谢!

Tho*_*yer 9

toArray()返回一个Object[],而不是一个String[](记住:Java工作中的泛型按类型擦除,所以ArrayList<String>实际上可以包含一个Number),因此动态转换错误(又名ClassCastException).

常用的方法toArray(…)是传递适当大小的数组,因此不需要重新分配:

String[] myArray = myList.toArray(new String[myList.size()]);
Run Code Online (Sandbox Code Playgroud)