2012-05-15 3 views
1

나는 ArrayList를위한 생성자를 만들어야 만한다. 그래서 기본적으로 내가 원하는 것은이 생성자가 ArrayList를 만드는 것입니다.생성자의 String [] 또는 ArrayList?

public Recipe(String[] modifications){ 

The problem is, it should give something like(example): 

String[] modifications = [heatup, cooldown, mix, heatup] 

는 다음과 같이 생성자 작동합니다

Recipe(heatup, cooldown, mix, heatup) 

또는 내가 somethign 등을 변경해야합니까 :

Recipe(modifications){ 
    this.myArrayList[1] = modifications[1] 
    . 
    . 
    . 
    } 

당신을 감사하고 죄송 몇 가지 큰 실수에가있는 경우 내 코드, 아직 내 Java 코드를 배우기.

답변

4

귀하는이 방법으로 정의 할 수 있습니다 :

public Recipe(String... modifications) 

이 당신에게 변수 인수 목록을 줄 것이다, 그래서 당신의 생성자는 다음과 같이 작동합니다 : Recipe(heatup, cooldown, mix)합니다.

생성자의 내부에서 배열과 마찬가지로 사용할 수 있습니다.

2

변화 가변 인자로 생성자 : 당신이 String[]modifications에 액세스 할 수 있습니다

public Recipe(String ... modifications){ 

및 그러나, 그 배열이 아닌 ArrayList를합니다. 당신은 가변 인자 매개 변수와 함께 생성자를 만들 수

private final List<String> list; 
public Recipe(String ... modifications){ 
    this.list = new ArrayList<String>(Arrays.asList(modifications)); 
} 
+0

오 남자, 나는 바보 같아요 : p 나는 Array와 ArrayList의 차이점을 알고 있습니다. 그러나 나는 그 모든 것에 지금까지 깊이 관여하고 있습니다. 나는 계속 내 마음 속에 것들을 엉망으로 만들었습니다. :) 정말로 모두에게 감사드립니다! :)! –

2

: 당신이 ArrayList를 원하는 경우 같은 것을 할

public Recipe(String... modifications){...} 

는이처럼 호출 할 수

Recipe(heatup, cooldown, mix, heatup); 

주 잠재적으로 상충하는 매개 변수 목록을 가진 다른 생성자를 계획하고 있다면 varargs 매개 변수에주의해야합니다. 그러나, 이것이 유일한 생성자라면, varargs는 괜찮을 것이다. 방금 요소를 복사 할 경우

2

이 생성자

ArrayList<String> list=new ArrayList<String>(); 
     public Recipe(String[] modifications){ 

    // String a[]={"asas"}; 

      list.addAll(Arrays.asList(modifications)); 
2

두 번째에 ... 물론 당신은 for를 사용할 수 있습니다.

매개 변수로 전달 된 배열을 클래스 속성/메소드 변수에 복사 할 수도 있습니다. 단, 그렇게하지 않는 다른 동기가 없다면.

마지막으로 Recipy(String[] modifications) {과 같을 것임을 기억하십시오. 인수 유형을 정의해야합니다.

그리고 이제 정말로 myArrayList는 ArrayList에 다소 불행한 이름입니다 (API에는 ArrayList라는 클래스가 있습니다). 당신이 원하는 무엇

2

인수의 예측할 수 전달할 수 있어야하는 것입니다 생성자 내부

public Recipe(String ... modifications) { 

을 수정 배열입니다.

이이 작동합니다 :

new Recipe("heatup", "cooldown", "mix", "heatup"); 

이과를 :

new Recipe(); 

이과를 :

new Recipe("heatup", "mix"); 
2

당신은 varargs를 사용할 수 있습니다

public Recipe(String ... modifications) { 
    // now you can use modifications as an array 
    for (int f = 0; f < modifications.length; f++) { 
    System.out.println("#" + f + ": " + modifications[f]); 
    } 
} 

.

가 작성하는 클래스를 방금 한 사용하려면

Recipe myRecipe = new Recipe("heatup", "mix"); 

합니다.

관련 문제