关于List子类调用subList(int from,int end)出现类型转换异常

在写文本聚类算法中发现List子类在调用subList(int from,int end)函数时出现java.lang.ClassCastException: java.util.SubList cannot be cast to java.util.LinkedList异常,遂将这部分功能提出出来做测试,测试代码如下:
public class TestJavaDemo{
  
    public static void main(String[] args) {
        LinkedList<Integer> list=new LinkedList<Integer>();
        for(int i=0;i<10;i++){
            list.add(i);
        }
        list=(LinkedList<Integer>) list.subList(0, ;
        for(int temp:list){
            System.out.println(temp+"\t");
        }
    }
}
运行程序,出现以下异常:
java.lang.ClassCastException: java.util.SubList cannot be cast to java.util.LinkedList,本人以为LinkedList即是List子类,则应该可以调用该方法的啊,却出现这样的异常,遂上网寻找答案。原来subList函数返回的是List类型,强制转换的过程中,会随即的转换为其任意的一个子类,若转换成的子类不是LinkedList类型,则会出现上述的类型转换错误。所以在以为的强转过程中,尤须注意。
可以做如下修改:
//list=(LinkedList<Integer>) list.subList(0, ;
-->修改为:List<Integer> listBuffer=list.subList(0, ;
或者list=new LinkedList<Integer>(list.subList(0, );

猜你喜欢

转载自minmai.iteye.com/blog/1758489