shr*_*rma 3 java collections list
创建最终列表为
final List<String> list = new ArrayList<String>();
不会让我重新分配列表,因为列表是最终的.
list = new ArrayList<String>();
会给出编译错误.
但是在插入第16个元素后,必须创建一个容量= oldCapacity*3/2 +1的新ArrayList,并且必须将其分配给list.
JVM如何允许在这种情况下重新分配最终列表.
但插入第16个元素后,必须创建一个容量= oldCapacity*3/2 +1的新ArrayList,并且必须将其分配给列表
不,创建了一个新的后备阵列(插入第11个元素时).后备数组是ArrayList
(定义为transient Object[] elementData;
)的实例变量.对该实例变量执行赋值,而不是final
.
ArrayList
未创建新实例,并且该list
变量仍引用相同的实例.
因此,在您描述的方案中没有对最终变量的赋值.
归档时间: |
|
查看次数: |
64 次 |
最近记录: |