ArrayList源码中实现Iterator接口中的next方法时,为什么使用定义一个Object[] elementData。

ArrayList源码中实现Iterator接口中的next方法时,为什么定义Object[] elementData = ArrayList.this.elementData,然后从定义的elementData数组上取值。 return (E) elementData[lastRet = i]。而不是直接使用 ArrayList.this.elementData[lastRet = i]?

源码:

public E next() {
    checkForComodification();
    int i = cursor;
    if (i >= size)
        throw new NoSuchElementException();
    Object[] elementData = ArrayList.this.elementData;
    if (i >= elementData.length)
        throw new ConcurrentModificationException();
    cursor = i + 1;
    return (E) elementData[lastRet = i];
}
阅读 5.2k
3 个回答

如果这么写:

if (i >= ArrayList.this.elementData.length)
    throw new ConcurrentModificationException();
cursor = i + 1;
return (E) ArrayList.this.elementData[lastRet = i];

那么程序会多一次不必要的寻址。

依我看来这应该主要是为了使得代码更加的简洁

为了少敲几下,以及代码的可读性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题