List.toArray()强制类型转换报错:
List<String> list= new ArrayList<String>();
//根据小区id查询人行闸机
List<ResourceShadow> shadowList = queryAreaEntranceBrakesByPlace(dgpData.getProjectid(), communityid);
if(shadowList != null && shadowList.size() >0){
for (ResourceShadow resourceShadow : shadowList) {
list.add(resourceShadow.getResid());
}
}
//人行闸机id
String[] brakeIdArr = (String[]) list.toArray();
原因是:不能将Object[] 转化为String[],转化的话只能是取出每一个元素再转化,
java中的强制类型转换只是针对单个对象的,想要偷懒将整个数组转换成另外一种类型的数组是不行的。
Object[] arr = list.toArray();
for (int i = 0; i < arr.length; i++) {
String e = (String) arr[i];
System.out.println(e);
}
ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:
1.list.toArray();
2.list.toArray(T[] a);
对于第一个重载方法,是将list直接转为Object[] 数组;
第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。
改成下面这样更方便:
//参数指定空数组,节省空间
String[] brakeIdArr = (String[]) list.toArray(new String[0]);
还可以这样写:
String[] y = x.toArray(new String[x.size()]);
new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定
list.toArray(new String[0]);//转化成String数组
list.toArray(new int[0]); //转化成int数组
https://blog.csdn.net/tomcat_2014/article/details/51164080
https://www.cnblogs.com/zzzzw/p/5171221.html