从源码来分析以下:
- /*Arrays.java摘取部分*/
- public static <T> List<T> asList(T... a) {
- return new ArrayList<>(a);//---------看下面静态内部类
- }
- private static class ArrayList<E> extends AbstractList<E>//-------它继承了AbstractList但是没有复写add方法
- implements RandomAccess, java.io.Serializable
- {
- private static final long serialVersionUID = -2764017481108945198L;
- private final E[] a;
- ArrayList(E[] array) {
- if (array==null)
- throw new NullPointerException();
- a = array;
- }
- public int size() {
- return a.length;//----------------集合的长度为固定的,就是数组长度
- }
- }
-
-
- /*AbstractList.java*/
- public boolean add(E e) {
- add(size(), e);
- return true;
- }
- public void add(int index, E element) {
- throw new UnsupportedOperationException();//-------在未被复写的情况下总是抛出异常
- }
- 综合以上:当你把数组->集合,它就是个固定长度的集合,而不是功能类似于ArrayList的集合
复制代码 |