recherche

Maison  >  Questions et réponses  >  le corps du texte

Concernant les problèmes d'implémentation de la collection Java LinkedList

public E removeLast() {
    final Node<E> l = last;
    if (l == null)
        throw new NoSuchElementException();
    return unlinkLast(l);
}

last est une variable membre. Pourquoi ne pas l'utiliser directement dans la méthode au lieu de l'attribuer à une variable locale finale ?

过去多啦不再A梦过去多啦不再A梦2833 Il y a quelques jours1015

répondre à tous(2)je répondrai

  • typecho

    typecho2017-06-23 09:16:09

    J'ai regardé le code

        transient Node<E> last;

    last est transitoire, n'est-ce pas ? Si vous l'attribuez à une variable finale locale, vous n'avez pas besoin de vérifier la valeur à chaque fois que vous utilisez last, n'est-ce pas ?

    répondre
    0
  • 巴扎黑

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

    Une partie de la raison est de garantir la sécurité des fils. En supposant que cette méthode n'utilise pas la variable l mais fait directement référence au dernier membre, alors le jugement devient if(this.last == null)。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句 unlinkLast(this.last) et des résultats inconnus se produiront.

    répondre
    0
  • Annulerrépondre