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));
????}