2016-09-08 3 views
0

私は、次のArrayListがありますジェネリック型ArrayListを静的にするにはどうすればいいですか?

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

を私は他のクラスとその価値を共有したい、しかし、私は、静的としてそれを定義するとき、それは私に次のエラーを与える:

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

だから誰にもありませんそれを静的にする方法や他の方法で他のクラスとその価値を共有する方法を知っていますか?

ありがとうございます。

+1

あなたは完全な例を共有できますか?あなたは正確に何を達成しようとしていますか? – Mureinik

+0

@Mureinik上記のリストと別のクラスにオブジェクトを追加するクラスがあります。リストを埋めるのを待つスレッドがあるので、スレッドからチェックするときにリストの同じ値を取得します。 –

+0

スレッドは、そのインスタンスから正しい参照を取得できるように、含まれているインスタンスへの参照を必要とします。 – BarrySW19

答えて

1

<E>は、クラスの各インスタンスごとに異なる<E>が異なるプロパティとして定義されるため、静的プロパティの定義には使用できません。あなたが見ることができるようにと、「リスト」は、それが必要となるような静的リストは意味をなさないでしょうA.のインスタンスごとに異なるジェネリック型を取る必要

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<>(); 
    } 
} 

...:例えば、次のスニペットを考えてみましょう同時に両方のタイプのものであること。

特定のインスタンスに結びつけられなければならないという事実は、おそらく、他のクラスと値を共有する際にしようとしていることを再考する必要があります。

関連する問題