遇到一问题:
ArrayList <sealDTO> list=new ArrayList <sealDTO>();sealDTO d1=new sealDTO();
d1.setDirectuser("thomas1");
sealDTO d2=new sealDTO();
d1.setDirectuser("thomas2");
sealDTO d3=new sealDTO();
d1.setDirectuser("thomas3");
sealDTO d4=new sealDTO();
d1.setDirectuser("thomas4");
list.add(d1);
list.add(d2);
list.add(d3);
list.add(d4);
ArrayList <sealDTO>  l2 =(ArrayList <sealDTO>) list.subList(1, 2);红色部分报告 转型异常,为什么会有转型异常啊,感觉很奇怪异常:Exception in thread "main" java.lang.ClassCastException: java.util.RandomAccessSubList
at com.esa.demo.testMain.main(testMain.java:26)

解决方案 »

  1.   

    抢位先
    ArrayList<sealDTO> l3 = new ArrayList<sealDTO>( list.subList(1, 2));
    不会出错,大家一起找
      

  2.   

    1 错误信息不完整,
    2 你清理一下你的项目或者你的部署目录看看,也许有残留的class造成重复
      

  3.   

    3 list.subList(1, 2); 
    这个只能保证返回的是List,不能保证一定是ArrayList建议你
    ArrayList <sealDTO> list=new ArrayList <sealDTO>(); 应该写成
    List<sealDTO> list=new ArrayList <sealDTO>(); 
    List<sealDTO>  l2 =(List<sealDTO>) list.subList(1, 2); 
    尽可能面向接口编程
      

  4.   

    subList返回一个RandomAccessSubList实例
    而RandomAccessSubList和ArrayList没有继承或实现的关系。
    不知道是不是这样
      

  5.   

    一下就怎么多人出来了
    找到原因了subList调用的是
        public List<E> subList(int fromIndex, int toIndex) {
            return (this instanceof RandomAccess ?
                    new RandomAccessSubList<E>(this, fromIndex, toIndex) :
                    new SubList<E>(this, fromIndex, toIndex));
        }
    新建了一个实现了List接口的实例作为返回值,而ArrayList 是实现List的类,返回值的类型不是原来的
    ArrayList 类型,强制转换时就出错了