java ,将 object类型转换为 ArrayList<> 类型?

本人做法如下:

 Object date=pagelist.getResult();
  ArrayList<Jibing> list =(ArrayList<Jibing>)date;//jibing 是实体类
     if (list != null && list.size() > 0)
        {
            for (int i = 0; i < list.size(); i++)
            {               
                Jibing m = (Jibing)list.get(i);//报错

问题, 最后一句报错,怎么获取list 中的数据?
请大神赐教,感激不尽!

阅读 26.2k
5 个回答

Jibing m = (Jibing)list.get(i);这句前面的强转是多余的,list本身存的就是就是Jibing。报错应该就是ClassCastException,那么问题就是出在了ArrayList<Jibing> list =(ArrayList<Jibing>)date;这句,说明date是一个集合,但是集合里面不是Jibing,所以你可以强转成ArrayList,但是当你获取里面的元素时就不能强转成Jibing了。

强转容易报错,要确定 data 适合强转
具体要实现什么功能?

list.get()打上括号啊,执行顺序明显不对。

Object date=pagelist.getResult();
返回类型要明确,不要强转,鬼知道返回的类型是什么
使用泛型吧

public class ServiceResult<T>{
    private String resultMsg="";
    private int resultCode="";
    private T result;
    public T getResult(){
        return result;
    }
    public void setResult(T returnObj){
        this.result=returnObj;
    }
}
...
ServiceResult<ArrayList<Jibing>> date=pagelist.getResult();
ArrayList<Jibing> list = date.getResult();
if (list != null && list.size() > 0)
{
    for (int i = 0; i < list.size(); i++)
    {               
        Jibing m = (Jibing)list.get(i);//报错
    }
}

看你date最终返回出来的是什么类型,根据类型去转换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题