gpt4 book ai didi

java - 链表实现中final的原因

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:30 26 4
gpt4 key购买 nike

在链表实现中,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

最佳答案

final 这里并不真正需要局部变量。它只是向 future 的开发人员表明,该变量不会在方法中进一步修改。当然,在上述方法中,我们不希望引用 lnewNode 的值在方法中的任何时候都发生变化。有了 final,编译器会给你错误,如果你(或你的队友之一)不小心做了这样的改变

此外,这还可能使编译器对其自身部分进行一些小的优化,例如创建一个引用编译时常量final 的原始类型,将使编译器在方法内部使用的任何地方内联这些变量。请注意,final 修饰符不会进入字节码,因此运行时性能 绝对不受影响。正如上面所说,它只是为了显示开发者的意图而存在的,仅此而已。

关于java - 链表实现中final的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com