在 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/