public class subListTest {
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
List listsub = list.subList(0, 3);
System.out.println(listsub);
}
}
List listsub = list.subList(0, 3); 如果改成下面的式子
ArrayList listsub = list.subList(0, 3);就会报标题的java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误。
原因分析是:subList返回的是list,问题就是在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));
}