1

ArrayList のコンストラクターを作成する必要があります。したがって、基本的に私が望むのは、このコンストラクターが 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)

または、次のようなものに変更する必要がありますか:

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

私のコードに大きな間違いがあり、まだ Java コードを学んでいる場合は、ありがとうございます。

4

7 に答える 7

3

次のように定義できます。

public Recipe(String... modifications)

これにより、可変引数リストが得られるため、コンストラクターは次のように機能します Recipe(heatup, cooldown, mix)

コンストラクター内では、配列のように使用できます。

于 2012-05-15T07:48:21.923 に答える
2

varargs パラメーターを使用してコンストラクターを作成できます。

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

次に、次のように呼び出すことができます。

Recipe(heatup, cooldown, mix, heatup);

ただし、競合する可能性のあるパラメーター リストを持つ他のコンストラクターがある (計画している) 場合は、varargs パラメーターに注意する必要があります。ただし、これが唯一のコンストラクターである場合は、varargs で問題ありません。

于 2012-05-15T07:48:51.287 に答える
2

コンストラクターでこれを行うことができます

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

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

            list.addAll(Arrays.asList(modifications));
于 2012-05-15T07:49:13.020 に答える
2

2番目のもの...もちろんfor、要素をコピーするだけの場合は a を使用できます。

また、別の理由がない限り、パラメーターで渡された配列をクラス属性/メソッド変数にコピーすることもできます。

最後に、 のようなものになることを覚えておいてRecipy(String[] modifications) {ください。引数の型を定義する必要があります。

最後に、myArrayList は、配列の名前としてはやや残念です (API には ArrayList というクラスがあります)。

于 2012-05-15T07:49:21.813 に答える
2

必要なのは、未定の数の引数を渡すことができるようにすることです。

public Recipe(String ... modifications) {

コンストラクター内では、変更は配列です。

これはこれで動作します:

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

そしてこれで:

new Recipe();

そしてこれで:

new Recipe("heatup", "mix");
于 2012-05-15T07:50:06.807 に答える
2

コンストラクターを可変引数に変更します。

public Recipe(String ... modifications){

modificationsただし、これは配列であり、String[]ArrayList ではありません。ArrayList が必要な場合は、次のようにします。

private final List<String> list;
public Recipe(String ... modifications){
    this.list = new ArrayList<String>(Arrays.asList(modifications));
}
于 2012-05-15T07:48:28.590 に答える
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");

.

于 2012-05-15T07:53:23.993 に答える