public E removeLast() {
final Node<E> l = last;
if (l == null)
throw new NoSuchElementException();
return unlinkLast(l);
}
terakhir ialah pembolehubah ahli Mengapa tidak menggunakannya secara langsung dalam kaedah dan bukannya memberikannya kepada pembolehubah tempatan akhir?
Tengok kod
yang terakhir adalah sementara, bukan? Jika anda menetapkannya kepada pembolehubah akhir setempat, anda tidak perlu menyemak nilai setiap kali anda menggunakan yang terakhir, bukan?
Sebahagian daripada sebabnya adalah untuk memastikan keselamatan benang. Dengan mengandaikan bahawa kaedah ini tidak menggunakan pembolehubah l tetapi secara langsung merujuk kepada ahli terakhir, maka penghakiman menjadi
if(this.last == null)
。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句unlinkLast(this.last)
dan keputusan yang tidak diketahui akan berlaku.