2016-09-08 3 views
0

Ich habe folgende Arraylist:Wie generiere ich ArrayList statisch?

public ArrayList<E> list = new ArrayList<>(); 

Und ich will seinen Wert mit anderen Klassen teilen, aber wenn ich definiere es als statisch es gibt mir die folgende Fehlermeldung:

'Packagename.Class.this' Cannot be referenced from a static context. 

jemand so tut wissen, wie man es statisch macht oder wie man seinen Wert auf andere Weise mit anderen Klassen teilt?

Vielen Dank.

+1

Können Sie ein vollständigeres Beispiel teilen? Was genau willst du erreichen? – Mureinik

+0

@Mureinik Ich habe eine Klasse, die Objekte zu der obigen Liste hinzufügen und in einer anderen Klasse habe ich einen Thread, der auf die Liste wartet gefüllt werden, So möchte ich den gleichen Wert der Liste, wenn ich es aus dem Thread überprüfen. –

+0

Dann benötigt der Thread einen Verweis auf die umgebende Instanz, damit er die richtige Referenz von dieser Instanz erhalten kann. – BarrySW19

Antwort

1

Sie können nicht die <E> auf eine statische Eigenschaft Definition verwenden, da die <E> wird unterschiedlich für jede Instanz der Klasse definiert werden. Betrachten wir zum Beispiel den folgenden Ausschnitt:

public class A<E> { 
    private List<E> list = new ArrayList<>(); 

    public static void main(String[] args) { 
     A<String> a1 = new A<>(); 
     A<Integer> a2 = new A<>(); 
    } 
} 

... wie Sie sehen können, die ‚Liste‘ muss verschiedene generische Typen für jede Instanz von A. nehmen würde eine statische Liste keinen Sinn machen, da es brauchen würde, beide gleichzeitig sein.

Die Tatsache, dass es an eine bestimmte Instanz gebunden sein muss, sollte wahrscheinlich dazu führen, dass Sie überdenken, was Sie versuchen, den Wert mit anderen Klassen zu teilen.

Verwandte Themen