2016-09-08 2 views
0

나는 다음 ArrayList에 있습니다제네릭 타입 ArrayList를 정적으로 만드는 방법은 무엇입니까?

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

을 그리고 다른 클래스와 그 가치를 공유하고 싶은,하지만 정적을 정의 그것은 나에게 다음과 같은 오류 줄 때 :

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

그래서 누군가를 수행을 그것을 정적으로 만드는 방법을 알고 있거나 다른 방법으로 다른 클래스와 값을 공유하는 방법을 알고 있습니까?

감사합니다. <E>이 클래스의 각 인스턴스에 대해 다르게 정의되기 때문에

+1

전체 사례를 공유 할 수 있습니까? 정확히 당신이 성취하고자하는 것은 무엇입니까? – Mureinik

+0

@Mureinik 위의 목록과 다른 클래스에 객체를 추가하는 클래스가 있습니다. 목록이 채워질 때까지 기다리는 스레드가 있습니다. 따라서 스레드에서 확인할 때 목록의 동일한 값을 가져 오려고합니다. –

+0

그러면 해당 인스턴스에서 올바른 참조를 얻을 수 있도록 스레드에 포함 된 인스턴스에 대한 참조가 필요합니다. – BarrySW19

답변

1

당신은 정적 속성 정의에 <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<>(); 
    } 
} 

... 예를 들어, 다음 코드를 고려 동시에 두 가지 유형이 될 수 있습니다.

특정 인스턴스와 연결되어야한다는 사실은 다른 클래스와 값을 공유 할 때 수행하려는 작업을 다시 생각하게해야합니다.

관련 문제