2010-05-09 1 views
1

나는 이런 식으로 뭔가 할 노력하고있어 : 내가 인스턴스를 여러 개 그렇다면인스턴스 변수 인 경우 ArrayList가 Java에서 정적으로 자동 선언됩니까?

private class aClass 
{ 
    private ArrayList<String> idProd; 

    aClass(ArrayList<String> prd) 
    { 
     this.idProd=new ArrayList<String>(prd); 
    } 

public ArrayList<String> getIdProd() 
    { 
     return this.idProd; 

    } 
} 

ArrayLIst<String> (ST1, ST2, ST3) 나는 aClass의 새로운 개체를 만들고 싶어 :

{ 
aClass obj1,obj2,obj3; 
obj1=new aClass(st1); 
obj2=new aClass(st2); 
obj3=new aClass(st3); 
} 

각각의 (obj1..obj3) 메소드 getIdProd()에 액세스하면 모든 aClass 객체가 st3을 반환합니까? 인스턴스 변수로 ArrayList가 정적으로 자동 선언 되었습니까?

+1

st1, st2 및 st3은 무엇입니까? – Bozho

+0

Btw, 변수 및 메서드 선언에 인터페이스 (즉, List)를 사용하고 새 구체 인스턴스를 만들 때만 특정 구현 (ArrayList)을 사용하는 것이 좋습니다. 예 : http://stackoverflow.com/questions/822768/what-are-the-pitfalls-of-a-java-noob/824520#824520 – Jonik

+1

이 문맥에서'ArrayList'와 관련이 전혀 없습니다. 당신은 질문에서'ArrayList'을 이혼하고 혼란의 근본을 이해하려고 노력해야합니다. – polygenelubricants

답변

4

아니요, 멤버 변수는 사용자가 선언하지 않으면 자동으로 고정되지 않습니다. 귀하의 질문을 다시 형식화하고 귀하의 질문을 명확하게 할 수 있도록 추가 컨텍스트를 게시하는 것이 좋습니다. 대부분의 경우 귀하가 얻는 결과는 귀하의 질문과 다른 이유로 귀하가 기대하는 것과 다를 수 있습니다.

1

클래스에 새로운 arraylist를 작성하여 기존 배열의 모든 요소를 ​​새 배열 목록에 추가합니다.

그러나 요소는 동일합니다. 배열 목록이 "딥 클론"이 아니기 때문에 당신이 찾는 것처럼 보입니다. 모든 요소에 대해 clone()을 호출하고 클래스의 새 배열 목록에 클론을 추가하는 생성자를 작성해야합니다.

현재 : 코드 형식 기능을 사용하면 질문을 더 쉽게 읽을 수 있습니다. 편집 : 나는이 대답 : 당신이 생성자에서 배열 목록을 복사하기 때문에 당신이 그 (것)들에게 (공통되지 않음) 내부 인터페이스

를 선언하지 않는 한

0

데이터 멤버가 자동으로 고정되지 않습니다를 게시하는 동안 오, 당신은 그것을했다 항목 유형이 불변 (String)이기 때문에, aClass의 다른 인스턴스는 완전히 다른 ArrayList 복사본에서 작동합니다.