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

标签 java arraylist visibility inner-classes

java.util.ArrayList类,列表元素的对象数组被定义为包私有(private):

transient Object[] elementData; // non-private to simplify nested class access
评论指出,这个字段不是私有(private)的原因是在嵌套类中更容易访问。但是,嵌套类可以很好地访问封闭类的私有(private)数据。那么为什么是elementData不是私有(private)的?后台是否发生了某些事情(例如,在编译时)?

最佳答案

当您从嵌套类访问私有(private)字段时,编译器实际上会生成 synthetic accessor method那是包可见的,然后将其用于访问。它不能直接访问私有(private)成员,因此为了避免这种间接性,您可以使成员包可见。
这里是 an answer有更多细节。

关于java - 为什么 java.util.ArrayList 包中的数据数组是私有(private)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67312572/

相关文章:

java - ArrayList排序不影响ArrayList

java - 为什么 ArrayList 在开头插入元素比 LinkedList 在 java 中花费更多时间

javascript - 如何在 JavaScript 中公开一个方法

c# - 类中结构字段的保护级别

java - 是否可以使用带有 TLS 1.2 的 jTDS 连接到 Azure SQL Server?

java - 评论主题对象的面向对象设计

java - 为什么我会从 Apache Derby 收到这些错误?

java - 添加对象后列表大小返回0

css - 可见性:hidden and display:none?有什么区别

java - mediaplayer.setVolume() 的 int 为 float