提问者:小点点

为什么java.util.ArrayList包中的数据数组是私有的?


java.util.ArrayList类中,列表元素的对象数组定义为Package-Private:

transient Object[] elementData; // non-private to simplify nested class access

注释指出,该字段不是私有字段的原因是在嵌套的类中更容易访问。然而,嵌套的类可以很好地访问封闭类的私有数据。那么为什么elementdata不是私有的呢?在后台是否发生了一些事情(例如,在编译时)?


共1个答案

匿名用户

当从嵌套类访问私有字段时,编译器实际上会生成一个包可见的合成访问器方法,然后使用该方法进行访问。它不能直接访问私有成员,因此为了避免这种间接访问,您可以使成员包可见。

这里有一个更详细的答案。