将数组转换成集合Arrays.asList,不可进行add和remove操作的原因

您所在的位置:网站首页 arrays提供删除方法 将数组转换成集合Arrays.asList,不可进行add和remove操作的原因

将数组转换成集合Arrays.asList,不可进行add和remove操作的原因

2024-02-23 15:43| 来源: 网络整理| 查看: 265

直接上代码:

import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { Integer a[] = {1,2,5,6,9}; List list = Arrays.asList(a); System.out.println(list.size()); list.add(3); System.out.println(list.size()); } }

运行结果:

原因看源码:

@SafeVarargs @SuppressWarnings("varargs") public static List asList(T... a) { return new ArrayList(a); }

new了一个ArrayList集合,注意了,这个可不是ArrayList类,而是Arrays里面的一个静态内部类

内部类源码给出来参考:

private static class ArrayList extends AbstractList implements RandomAccess, java.io.Serializable { private static final long serialVersionUID = -2764017481108945198L; private final E[] a; ArrayList(E[] array) { a = Objects.requireNonNull(array); } @Override public int size() { return a.length; } @Override public Object[] toArray() { return a.clone(); } @Override @SuppressWarnings("unchecked") public T[] toArray(T[] a) { int size = size(); if (a.length < size) return Arrays.copyOf(this.a, size, (Class


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3