2012-05-15 59 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

改變構造函數的可變參數:

public Recipe(String ... modifications){ 

,您可以訪問modificationsString[]然而,這是一個數組,而不是一個ArrayList。如果你想要一個ArrayList,做這樣的事情:

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

呵呵,我覺得很蠢:p我知道Array和ArrayList之間的區別,但是,現在我深入瞭解這一切,我一直在想什麼:)我非常感謝這裏的所有人:)! –

2

你可以做一個構造函數可變參數的參數:

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

那麼你可以這樣調用:

Recipe(heatup, cooldown, mix, heatup); 

注儘管如果你(計劃)有其他可能有衝突參數列表的構造函數,你應該小心使用可變參數參數。但是,如果這是您唯一的構造函數,則可變參數應該沒問題。

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中的一個類)的名稱有點不幸。

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"); 

相關問題