public class Test { public static void main(String[] args) {
ArrayList strList = new ArrayList();
strList.add("one");
strList.add("two");
strList.add("three"); String[] strArray = (String[]) strList.toArray();
}
}运行时报错:java.lang.ClassCastException
at temp.Test.main(Test.java:19)
Exception in thread "main"
请问这是什么原因?
ArrayList strList = new ArrayList();
strList.add("one");
strList.add("two");
strList.add("three"); String[] strArray = (String[]) strList.toArray();
}
}运行时报错:java.lang.ClassCastException
at temp.Test.main(Test.java:19)
Exception in thread "main"
请问这是什么原因?
.的优先级 比 ()强制转换 高
所以 (String[]) strList.toArray();系统执行的其实是(String[])(strList.toArray())
这样把一个String强制转换成数组,当然是出现ClassCastException异常了
你应该写成((String[]) strList).toArray();
strList.add("one");
strList.add("two");
strList.add("three"); String[] strArray = new String[strList.size()];
strList.toArray(strArray);