Arrays.toList(T[] t)返回的List不可执行add方法

本文探讨了Arrays.toList()方法返回的ArrayList为何不支持add操作,原因是其内部类Arrays.ArrayList使用不可变数组,未实现Cloneable接口,旨在简化数组到List的转换,而非提供通用List功能。
摘要由CSDN通过智能技术生成

前言

首先让我们来看一段代码:

String[] strings = new String[]{
  "hello","world"};
List<String> stringList = Arrays.asList(strings);
stringList.add("java");

咋眼一看这段代码没什么问题,然而这段带却抛出了一个名为:UnsupportedOperationException的异常。看到异常时有些懵逼,查了资料说只是因为Arrays自身实现的问题。于是乎,我查看了源码。

ArrayList之李逵与李鬼

Arrays.toList(T… t) 方法返回的是Arrays的一个内部类ArrayList,大家可不要被这个名字骗了,此ArrayList非彼ArrayList啊,这完全就是李鬼啊。

声明方式

先看一下这个ArrayList的声明方式吧:

private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable

我们经常使用的ArrayList的声明方式为:

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable

再看看AbstractList的声明方式为:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值