Warum nimmt der JDK-Quellcode eine endgültige Kopie der flüchtigen Instanzen?

Ich habe den Quellcode des JDK über ConcurrentHashMap gelesen.

Aber der folgende Code hat mich verwirrt:

public boolean isEmpty() {
    final Segment<K,V>[] segments = this.segments;
    ...
}

Meine Frage ist:

"this.segments" wird deklariert:

final Segment<K,V>[] segments;

Zeigen Sie hier, am Anfang der Methode, mit derselben Typreferenz auf denselben Speicher.

Warum hat der Autor das so geschrieben? Warum haben sie this.segments nicht direkt verwendet? Gibt es einen Grund?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage