让我们假设:
查看 ArrayList 源代码,我们可以看到 size 和 elementData 字段不是可变的:
transient Object[] elementData; // non-private to simplify nested class access
private int size;
Run Code Online (Sandbox Code Playgroud)
另外,让我们看看 add 方法:
/**
* This helper method split out from add(E) to keep method
* bytecode size under 35 (the -XX:MaxInlineSize default value),
* which helps when add(E) is called in a C1-compiled loop.
*/
private void add(E e, Object[] elementData, int s) {
if (s == elementData.length)
elementData = grow();
elementData[s] = e; …Run Code Online (Sandbox Code Playgroud)