public class Test {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
strList.add(new String("hello"));
strList.add(new String("world")); String[] strArray = (String[]) strList.toArray(); //失败
// String[] strArray = new String[strList.size()];
// strList.toArray(strArray); for(String s:strArray) {
System.out.println(s);
}
return;
}
}
为什么那行会失败?两个toArray()有什么不同?我换成如下代码,就好了public class Test {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
strList.add("hello");
strList.add("world");
String[] strArray = new String[strList.size()];
Object[] os = strList.toArray();
for(int i=0;i<os.length;i++){
strArray[i] =os[i].toString();
}
for(String s:strArray) {
System.out.println(s);
}
return;
}
}
难道是强制转换不能针对数组,只能一个一个来?
应该是用 toArray(T[])方法,这样返回T类型的数组
即
String[] strArray = strList.toArray(new String[0]);
方法一
String[] strArray = new String[strList.size()];
strList.toArray(strArray);
方法二
String[] strArray = (String[]) strList.toArray(new String[0]);
方法三
String[] str = new String[strList.size()];
String[] strArray = (String[]) strList.toArray(str);
最好能改成:String[] strArray = strList.toArray(new String[strList.size()]);