在链表实现中,
为什么上述实现需要使用
final
在很多地方都被使用了。例如:void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
为什么上述实现需要使用
final
?因为会创建一个新引用 (l
),以便可以修改并覆盖 last
。