Изучая код java.util.LinkedList, как и в OpenJDK 8, я нашел следующий код. Код прост, но я смущен тем, что сохраняю ссылку на первый node на константу во второй строке кода. Насколько я понимаю, этот код будет привязан к однострочному без копирования ссылок. Я прав? Если это так, , почему нужно копировать ссылку в этой и подобных ситуациях (такая идиома может быть найдена в половине методов в java.util.LinkedList)?
public E peek() {
final Node<E> f = first;
return (f == null) ? null : f.item;
}
Моя первая мысль заключалась в том, что она каким-то образом помогает concurrency, но LinkedList не разрешает одновременный доступ (за исключением вашего собственного риска), поэтому я думаю, что это какой-то намек на оптимизатор, но не может понять, как это сделать должен работать.