java.util.Arrays$ArrayList是什么

作者 | 2020年4月19日

java.util.Arrays$ArrayListArrays类中的一个内联类,它用于包装一个固定长度的数组为不可变(Immutable)的List

Arrays.java

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

    /**
     * @serial include
     */
    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);
        }

        //...

    }

Arrays.asList方法返回java.util.Arrays$ArrayList的一个实例对象。

  List<String> list = Arrays.asList("1", "2", "3", "4", "5");

  System.out.println(list.getClass()); // class java.util.Arrays$ArrayList

UnsupportedOperationException

如果我们在java.util.Arrays$ArrayLis的实例对象上进行修改,将会抛出UnsupportedOperationException异常。

  // immutable list
  List<String> list = Arrays.asList("1", "2", "3", "4", "5");
  list.remove("3");

输出

Exception in thread "main" java.lang.UnsupportedOperationException: remove
    at java.base/java.util.Iterator.remove(Iterator.java:102)
    at java.base/java.util.AbstractCollection.remove(AbstractCollection.java:299)

发表评论

电子邮件地址不会被公开。 必填项已用*标注