工程网站怎么做,广州做网站平台,呼市做网站,什么网站需要备案Arrays.asList()返回一个List#xff0c;但是这种情况下#xff0c;其底层的实现是一个final数组#xff0c;因此不能调整其尺寸如下代码片段#xff1a;package chapter11.t1;import java.util.*;public class AddingGroups {public static void main(String[] args) {Lis…Arrays.asList()返回一个List但是这种情况下其底层的实现是一个final数组因此不能调整其尺寸如下代码片段package chapter11.t1;import java.util.*;public class AddingGroups {public static void main(String[] args) {List list Arrays.asList(1,2,3,4,5);list.add(6);}}通过Arrays.asList()生成list对象然后再向list中添加元素6程序报错如下Exception in thread main java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at chapter11.t1.AddingGroups.main(AddingGroups.java:8)看下Arrays类的源码如下asList()方法返回一个内部类ArrayList的对象public static List asList(T... a) {return new ArrayList(a);}下面看下Arrays类中的ArrayList内部类的源码private static class ArrayList extends AbstractListimplements RandomAccess, java.io.Serializable{private static final long serialVersionUID -2764017481108945198L;private final E[] a;ArrayList(E[] array) {a Objects.requireNonNull(array);}Overridepublic int size() {return a.length;}Overridepublic Object[] toArray() {return a.clone();}OverrideSuppressWarnings(unchecked)public T[] toArray(T[] a) {int size size();if (a.length size)return Arrays.copyOf(this.a, size,(Class extends T[]) a.getClass());System.arraycopy(this.a, 0, a, 0, size);if (a.length size)a[size] null;return a;}Overridepublic E get(int index) {return a[index];}Overridepublic E set(int index, E element) {E oldValue a[index];a[index] element;return oldValue;}Overridepublic int indexOf(Object o) {E[] a this.a;if (o null) {for (int i 0; i a.length; i)if (a[i] null)return i;} else {for (int i 0; i a.length; i)if (o.equals(a[i]))return i;}return -1;}Overridepublic boolean contains(Object o) {return indexOf(o) ! -1;}Overridepublic Spliterator spliterator() {return Spliterators.spliterator(a, Spliterator.ORDERED);}Overridepublic void forEach(Consumer super E action) {Objects.requireNonNull(action);for (E e : a) {action.accept(e);}}Overridepublic void replaceAll(UnaryOperator operator) {Objects.requireNonNull(operator);E[] a this.a;for (int i 0; i a.length; i) {a[i] operator.apply(a[i]);}}Overridepublic void sort(Comparator super E c) {Arrays.sort(a, c);}}该内部类的构造方法如下ArrayList(E[] array) {a Objects.requireNonNull(array);}也就是说Arrays.asList()返回一个final数组因此不可以改变次数组的大小。当我们试图用add()或delete()方法在这种列表中添加或删除元素的时候会引发数组尺寸的改变。因此在运行时会抛java.lang.UnsupportedOperationException不支持的操作这样的异常。