2014-04-04 6 views
0

가슴은 객체와 같이 가슴 클래스 내에서 만들고 싶은 다른 클래스입니다. int가 될 ArrayList를 비롯하여 여러 값으로 선언하고 싶습니다.arrayList를 초기화하는 방법

이 형식을 올바르게 지정하려면 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다!

올바르게 컴파일되지 않습니다.

Chest chest = new Chest(0,0,0, {0},false,false); 

는 희망이 내가이 내가 그것을 해결하는 방법 다른 클래스

import java.util.*; 

public class Chest 
{ 
    public ArrayList<Integer> idList; 
    public boolean closed; 
    public boolean opened; 

    public Chest(int xpos, int ypos, int numContents, ArrayList<Integer> idList, boolean opened, boolean closed) 
    { 
    this.closed = true; 
    this.opened = false; 
    } 

} 

의 ArrayList를

Chest chest = new Chest(0,0,0, new ArrayList<Integer>(),false,false); 

감사합니다입니다

을 할 노력하고있어 의미가 있습니다 미차!

답변

2

이 작업을 수행 할 수 있습니다

List<Integer> list = Arrays.asList(1,2,3); 
Chest chest = new Chest(0, 0, 0, list, false, false); 
+0

이 작업이 신속하고 간단하게 해결해 주셔서 감사합니다. – user1920076

+0

Arrays.asList에 의해 반환 된 List는 크기를 재조정 할 수 없습니다. –

2

하는 간단한 방법 :

chest = new Chest(0,0,0, Arrays.asList(5, 6, 7),false,false); 

Chest chest = new Chest(0, 0, 0, new ArrayList<Integer>(), false, false); 

당신이 바로 가기로 Arrays.asList()을 사용할 수있는 목록에 값을 추가하려면

이것은 생성자에서 ArrayList<Integer> idList의 문제를 일으킬 것입니다. probably changeList<Integer> idList으로 설정해야합니다. 그렇지 않으면 내 원래의 대답은 가리 켰을 때,

, 당신은

new ArrayList<>(Arrays.asList(5, 6, 7))를 사용할 수 있습니다.

참조 : Arrays.asList(T... a)

+0

왜 새 ArrayList인지, Arrays.asList()가 아닌 이유는 무엇입니까? – eis

+0

@eis : 좋은 질문입니다. 그 조합은 내 기억에 뿌리 내리고 있지만 지금은 왜 그런지 모르겠다. –

+0

Arrays.asList()가 고정 크기 목록을 제공한다는 사실 때문에, 새로운 ArrayList를 사용해야한다. 변경 가능한 목록. 그러나,이 경우에는 읽기 전용 목록을 확인해야한다고 생각합니다. – eis

1

당신은 그것으로 초기화 할 수 있습니다 : 반환 형식이 어쨌든 원하는 아마 인, List<Integer>보다는 ArrayList<Integer> 것을

new Chest(0, 0, 0, Arrays.asList(0), false, false) 

참고. 클래스 선언에 사용할 인터페이스 List의 특정 구현을 지정하지 않아도됩니다. 당신이 빈리스트로 초기화 할 경우

, 당신은 사용할 수 있습니다 : 두 경우 모두

new Chest(0, 0, 0, Collections.emptyList(), false, false) 

주, 당신은 불변의 목록을 가져옵니다.