3

クラスを実装しており、そのコンストラクターはいくつかの文字列をパラメーターとして取得する必要がありますが、これらの文字列の数がわかりません。ここで vararg パラメーター (文字列) を渡すこともできますが、これは宿題であり、ソリューションではどのような種類の配列やその他の一般的でないライブラリも使用できません。(現在、コレクション フレームワークを学習しているため、ArrayList などである必要があります) リストをパラメーターとしてコンストラクターに渡すことを考えましたが、このリストは前に入力する必要があり、かなり長い..単純なはずです。 .

したがって、varargs (受け入れられない) を使用した最初のソリューションは次のようになります。

public MyClass(String... myStrings) 
{
     for (String string : myStrings)
     {
          myStrings.add(string);
     }
}

したがって、たとえば次のように使用できます。

MyClass example = new MyClass("String1", "String2", "String3");

また

MyClass example2 = new MyClass("String1", "String2");

2番目のもの(リストは前に「入力」する必要があるため、少し複雑です):

public MyClass(List<String> myStrings) 
{
      myPlayers = myStrings;
}

(ps: myPlayer は、その後初期化されるインスタンス変数です)

それで、あなたは何か考えがありますか(最初のもののようですが、なしで

4

2 に答える 2

3

Builder パターンについて調査します。それについては、スタック オーバーフローの質問に良い議論があります。いつビルダー パターンを使用しますか? .

StringListBuilder クラスを作成する場合は、次のようなメソッド シグネチャを使用できます。

MyClass(List<String> stringList) {/* ... */}

次のように、ビルダー クラスを使用してコンストラクターを呼び出すことができます。

MyClass example = new MyClass(new StringListBuilder("first string").
        add("second string").add("third string").add("and so on").toList());

これにより、可変長引数や配列に頼ることなく、任意のサイズのリスト (空のリストを含む) を作成できます。

于 2013-04-16T21:19:56.457 に答える