¿Por qué JDK sourcecode toma una copia `final` de las instancias` volatile`
Leí el código fuente de JDK sobre ConcurrentHashMap.
Pero el siguiente código me confundió:
public boolean isEmpty() {
final Segment<K,V>[] segments = this.segments;
...
}
Mi pregunta es:
Se declara "this.segments":
final Segment<K,V>[] segments;
Entonces, aquí, al comienzo del método, declarado una referencia de tipo igual, apunta a la misma memoria.
¿Por qué el autor lo escribió así? ¿Por qué no usaron esto directamente? ¿Hay alguna razón?