关于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, 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<Integer>) list.subList(0, 8);
-->修改为:List<Integer> listBuffer=list.subList(0, 8);
或者list= new LinkedList<Integer> (list.subList(0, 8));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值