UnsupportedOperationException

    public static void main(String[] args)  {
        List<Integer> list = Arrays.asList(1, 2, 3, 4);
        list.remove(1);
    }
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:161)
	at com.lfweixiao.Test01.main(Test01.java:12)

原因,处理办法

原因: 这里的Arrays.asList返回的是 Arrays 中的 内部类 ArrayList此类继承了AbstractList却没重写 remove(int index)、set(int index, E element) 、add(int index, E element)

**解决方式:**直接 new 来创建 ArrayList

分析过程

  1. 通过异常详细我们知道是 不支持操作的异常 出现在 12 行
    remove(1)爆出的

    1. 这个 remover 方法应该有所问题
    2. 需要去类中找实体方法 看看
  2. 进入 Arrays.asList

      public static <T> List<T> asList(T... a) {
            return new ArrayList<>(a);//此处new 了一个 arraylist。点进去看看
        }
    
    //这里看的就有点不对了,这里是个静态内部类,继承了abstracList 
    private static class ArrayList<E> extends AbstractList<E>
            implements RandomAccess, java.io.Serializable
        {
            private static final long serialVersionUID = -2764017481108945198L;
            private final E[] a;
    
            ArrayList(E[] array) {
                a = Objects.requireNonNull(array);
            }
    
    //进入AbstractList
    //发现了报错了地方
    public E remove(int index) {
            throw new UnsupportedOperationException();
        }
    
    //不知如此 下面还有几个方法都在报错
     public E set(int index, E element) {
            throw new UnsupportedOperationException();
        }
    public void add(int index, E element) {
            throw new UnsupportedOperationException();
        }
    

好了我们知道,抽象类中的方法体,都在报错,那我们在回到实体类中看看方法有没被重写

在这里插入图片描述

到这里问题就很清楚了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值