java.lang.UnsupportedOperationException以及Arrays.asList()

public class ArrayListTest {
    public static  void main(String[] args){
        Map<String,List<String>> map = new HashMap<>();
        map.put("name", Arrays.asList("111","222"));
        List list = map.get("name");
        //Arrays.asList 不能调用add remove方法
        list.add("333");
    }
}

调用list.add方法就会报java.lang.UnsupportedOperationException,原因为Arrays.asList()返回的并不是util包下的ArrayList而是继承AbstractList的定长ArrayList,所以他没有add和renmove方法,以下为源码:

public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable
    {
        
        ArrayList(E[] array) {
            a = Objects.requireNonNull(array);
        }
    }

public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值