java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object解决方案
2017-05-26 10:54
405 查看
使用反射将代表一个数组对象的Object转化为数组
在Java中,当我们想通过反射向一个类中的数组成员赋值时,通常会使用到如下代码
如果该数组成员的类型是复合类,这样写没有问题,但当数组成员的类型是基础数据类型时,就常常会遇到一个问题:
这个时候我们无法完成强转,可以通过如下代码进行赋值:
在Java中,当我们想通过反射向一个类中的数组成员赋值时,通常会使用到如下代码
if(field.getType().isArray()){//验证成员是否是数组 Class<?> cls = field.getType().getComponentType();//获取数组成员的具体类型 Object[] os = (Object[]) Array.newInstance(cls, 3);//初始化一个长度为3的 对应类型的数组 }
如果该数组成员的类型是复合类,这样写没有问题,但当数组成员的类型是基础数据类型时,就常常会遇到一个问题:
java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
这个时候我们无法完成强转,可以通过如下代码进行赋值:
if(field.getType().isArray()){//验证成员是否是数组 Class<?> cls = field.getType().getComponentType();//获取数组成员的具体类型 Object o = Array.newInstance(cls, 3);//初始化一个长度为3的对应类型的数组 int len = Array.getLength(o);//获取初始化的数组长度 for(int i = 0; i < len; ++ i){//对数组对象依次赋值 Array.set(o, i, i + 1); } Method method = ...//获取成员对应的set方法略 method.invoke(vo, o);//通过反射完成赋值,其中vo是对应的数据封装类 }
相关文章推荐
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to XXX解决
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 问题
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xdcjc.model.D_Users
- 在使用spring+springMVC+hibernate遇到java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljav
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.Map
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
- java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
- Hibernate:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to co
- 十、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx.action.entity.Category
- 关于java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object的错误报告