27.1 原因
使用 Array.asList方法生成的ArrayList继承的是AbstractList抽象类 ,如下图所示。
AbstractList又继承了AbstractCollection抽象类,实现了List接口的方法,如下图所示。
如下图所示。可以发现, AbstractionCollection实现了List接口的add和addAll方法。
实现的add方法如下:
它直接抛出了一个异常,因此只要调用add方法就会抛出异常。
实现的allAll方法如下:
调用了add方法,但是一旦调用add方法就会抛出异常,因此调用allAll方法也会抛出异常。
27.2 如何使Arrays生成的ArrayList集合可以调用add或addAll方法
对于ArrayList,它的有参构造方法中可以传入Collection对象,而List接口继承了Collection接口,Arrays生成的ArrayList又实现了List接口,因此可以将生成的ArrayList作为ArrayList有参构造方法的输入对它进行转换,生成新的ArrayList。
新生成的ArrayList中的add方法具有添加元素的作用,因此可以调用add和addAll方法。文章来源:https://www.toymoban.com/news/detail-625775.html
文章来源地址https://www.toymoban.com/news/detail-625775.html
到了这里,关于27 使用Arrays.asList生成的集合无法使用add、addAll方法及解决方法。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!