问题描述
- String cannot be cast to [Ljava.lang.Object
-
Object[] againstObj = (Object[])anaginstList.get(0);anaginstList.get(0) 是一个List 取得List的第一个对象。 把这个对象转为Object数组。然后就报异常 java.lang.String cannot be cast to [Ljava.lang.Object;
解决方案
解释:
这个错误是很常见的错误,错误的提示已经很清楚了就是java的Object数组不能转换成为String[]数组,这就说明你要转换的数组它本身是Object类型的数组,但是你却非要把它转换为String类的数组,这当然是错误的。
?
示例:
package com.dada;
import java.util.ArrayList;
import java.util.Li......
答案就在这里:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
解决方案二:
List anaginstList=new ArrayList();
anaginstList.add("123");
Object againstObj = (Object)anaginstList.get(0);
System.out.println(againstObj);
List<Object[]> anaginstList1=new ArrayList();
anaginstList1.add(new Object[]{"22"});
Object[] againstObj1 = (Object[])anaginstList1.get(0);
System.out.println(againstObj1[0]);
解决方案三:
如果 anaginstList 也是对象类型就不会错。取出来的对象声明类型要一致。
解决方案四:
这里的话要看你的第一个对象是不是数组,如果是的话也不需要强转,因为objec是一个对象的父类。如果不是数组的话,用数组接收是错误的
解决方案五:
集合泛型是基本类型没办法强转数组,集合类型。取出来,手动加到数组中
解决方案六:
anaginstList.get(0);
这个取出的如果是数组是不会有问题的
很明显anaginstList.get(0);得到的不是数组
解决方案七:
从异常上看,你从list中取出来的是String类型,正常应该是Object类型,你是不是用了泛型。而你必须保证list中第一个元素的类型是Object数组,才能强转成功。
时间: 2024-11-03 22:19:14