我有一个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的细微差别.)
谢谢!
toArray()返回一个Object[],而不是一个String[](记住:Java工作中的泛型按类型擦除,所以ArrayList<String>实际上可以包含一个Number),因此动态转换错误(又名ClassCastException).
常用的方法toArray(…)是传递适当大小的数组,因此不需要重新分配:
String[] myArray = myList.toArray(new String[myList.size()]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5091 次 |
| 最近记录: |