根据面向对象编程的基本原则,数据应尽量的隐蔽。而ArrayList中的成员变量elementData却选择了默认可见性,也就是包可见性。源码中的注释为non-private to simplify nested class access,为了嵌套类可达。但即使外部类的成员变量为private,非静态嵌套类依然可达。
例如在内部类Itr,无论外部成员变量elementData是否为private,Itr均可访问。
ArrayList部分源码如下,
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
<