java - ArrayList<String>转换为String []

  显示原文与译文双语对照的内容

这个问题已经有了如下答案:

我在android环境下工作,已经尝试了以下代码,但它似乎没有工作。


String [] stockArr = (String[]) stock_list.toArray();

如果我定义如下:


String [] stockArr = {"hello","world"};

它很有用,有什么我缺少的?

时间:

用此方式使用。


List<String> stockList = new ArrayList<String>();
stockList.add("stock1");
stockList.add("stock2");

String[] stockArr = new String[stockList.size()];
stockArr = stockList.toArray(stockArr);

for(String s : stockArr)
 System.out.println(s);

发生的情况是 stock_list.toArray() 正在创建一个 Object[] 而不是 String[],因此角色是失败的。

正确的代码是:


 String [] stockArr = stockList.toArray(new String[stockList.size()]);

甚至甚至


 String [] stockArr = stockList.toArray(new String[0]);

有关详细信息,请参阅 List.toArray的两个重载的javadoc 。

( 从技术角度看,这个API行为/设计的原因是 List<T>.toArray() 方法的实现没有关于 <T> 在运行时的信息) 。 它只知道原始元素类型是 Object 。 相反,在另一种情况下,数组参数给出数组的基类型。 ( 如果提供的数组足够大,则使用它) 。 否则,将分配一个新类型的新数组并将它的作为结果返回。

...