2017-02-14 2 views

Antwort

1

List2 wird mit einer Implementierung der Liste zugewiesen. In dem genauen Fall ist es entweder SynchronizedRandomAccessList Objekt oder SynchronizedList Objekt, aber nicht die ArrayList.

Here ist der Quellcode:

public static <T> List<T> synchronizedList(List<T> list) { 
     return (list instanceof RandomAccess ? 
       new SynchronizedRandomAccessList<>(list) : 
       new SynchronizedList<>(list)); 
} 

Die statische Methode synchronizedList() in diesem Fall nur ein Helfer ist. Objekte in Java (keine primitiven Werte) arbeiten daran, Referenzen auf Speicherstellen zu übergeben. So gibt synchronizedList() eine Speicherreferenz zu new SynchronizedList() Objekt zurück, und indem Sie es aufrufen, weisen Sie diesen Speicherort Ihrem list2 Objekt zu.

1

Objekt Instanziierung ist immer erforderlich. In Java gibt es zwei Speicherbereiche: den Thread Stack und den Heap.

  • Primitives (dh Variablen, die keine Objekte sind) wie boolean, byte, short, char, int, long, float, double, sind im Thread Stapel
  • Objekte gespeichert, die mit erstellt werden die new Schlüsselwort in dem das Objekt instanziiert in dem Verfahren List

in Ihrem Fall Heap zugewiesen Collections.synchronizedList im Heap und der Verweis auf diese Liste zugeteilt werden wird die zugeordnet werden lokale Variable list2

Verwandte Themen