1.ArrayS源码:
public class Arrays
{
.....
//数组转集合
public static <T> List<T> asList(T... a)
{
return new ArrayList<>(a);
}
//内部类
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
内部没有add()方法。
}
....
}
2.AbstractList源码:
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
{
public boolean add(E e) {
add(size(), e);
return true;
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
}
3.ArratList源码
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{.......
add(E E)...
........
}
4.Arrays类内定义了ArrayList内部类,该内部类并没有实现List接口,add方法继承自AbstractList,AbstractList类内的add方法会抛异常。反观ArrayList源码,虽继承了AbstractList,也同时实现了List接口。
|