Maison > Questions et réponses > le corps du texte
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 ?
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 ?
巴扎黑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.