Concernant les problèmes d'implémentation de la collection Java LinkedList
过去多啦不再A梦
过去多啦不再A梦 2017-06-23 09:14:09
0
2
955
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梦

répondre à tous(2)
typecho

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 ?

巴扎黑

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal