关于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 list=new LinkedList();
              for(int i=0;i<10;i++){
                     list.add(i);
              }
              list=(LinkedList) list.subList(0, 8);
              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) list.subList(0, 8);
-->修改为:List listBuffer=list.subList(0, 8);
或者list= new LinkedList (list.subList(0, 8));

你可能感兴趣的:(java)