遇到一问题:
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);红色部分报告 转型异常,为什么会有转型异常啊,感觉很奇怪

解决方案 »

  1.   

    List subList(int start, int end) 返回一个列表,
    该列表包括了调用列表中从start到end–1的元素。
      

  2.   

    1.类名要首字母大写,呵呵。
    2.List接口的subList(int,int)方法在api上解释是返回一个List接口的实例,而实际他返回了一个RandomAccessSubList的实例,RandomAccessSubList确实是List接口的实现类不错,但强行转成ArrayList就肯定要报转型异常了。可以通过的写法是:List <sealDTO>  l2 = list.subList(1, 2);  我也比较纳闷会出这种错,写了代码后才知道,找到错误的地方还是异常堆栈信息,注意看:
    Exception in thread "main" java.lang.ClassCastException: java.util.RandomAccessSubList
      

  3.   

    ArrayList <sealDTO>  l2 =(ArrayList <sealDTO>) list.subList(1, 2); 
    把ArrayList换成List
      

  4.   

    为什么我在API里面没看到ArrayList有 subList这个方法啊?
      

  5.   

    RandomAccessSubList似乎是AbstractList的一个内部类,api上翻遍了也没找到。
      

  6.   

    返回的是RandomAccessSubList实例,那个类其实写在的AbstractList(756行)下面,是有包访问权
    然而ArrayList和RandomAccessSubList之间没有继承或者实现的关系