cari

Rumah  >  Soal Jawab  >  teks badan

Mengenai isu pelaksanaan koleksi java LinkedList

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?

过去多啦不再A梦过去多啦不再A梦2771 hari yang lalu980

membalas semua(2)saya akan balas

  • typecho

    typecho2017-06-23 09:16:09

    Tengok kod

        transient Node<E> last;

    yang terakhir adalah sementara, bukan? Jika anda menetapkannya kepada pembolehubah akhir setempat, anda tidak perlu menyemak nilai setiap kali anda menggunakan yang terakhir, bukan?

    balas
    0
  • 巴扎黑

    巴扎黑2017-06-23 09:16:09

    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.

    balas
    0
  • Batalbalas