写程序看到了这样一段代码:
………
List<String> masterKeys = getMasterKeys(masterTable);
//主键
String[] keys = masterKeys.toArray(new String[0]);
………
具体的功能是可以看懂的,就是将一个List 转换成一个String数组,但是有点困惑,想具体看看是怎么实现的,特别是括号里面的new String[0]。
toArray()里面没有内容行吗?
写一个小程序验证下,
报错,
按照错误提示,将strings类型转换为object 类,不报错。
换一种改法:将list.toArray() 强转成String 数组也是不报错的。
public class TesttoArray {
List<String> list = new ArrayList<String>();
String strings[] = (String [])list.toArray();
}
但是运行一下代码,发现控制台报错
import java.util.ArrayList;
import java.util.List;
public class TesttoArray {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("qwe");
list.add("asd");
list.add("zxc");
String strings[] = (String [])list.toArray();
for(int i=0; i<list.size(); i++){
System.out.println(strings[i]);
}
}
}
控制台报错。
Exception in thread "main" java.lang.ClassCastException:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
atTesttoArray.main(TesttoArray.java:14)
程序修改为:public class TesttoArray {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("qwe");
list.add("asd");
list.add("zxc");
// String strings