28

これが私のシナリオです:

メソッドを呼び出す必要があります。パラメータを次のようにします: Parameter1, Parameter2, .. , .. , Parameter N ただし、メソッドに送信されるパラメータは、それぞれの場合で変わる可能性があります。

ケース 1: Parameter1 のみが送信される

ケース 2:パラメータの組み合わせが送信される

ケース 3:すべてのパラメーターが送信される

Java でこれを達成する最良の方法は何ですか?

4

3 に答える 3

52

解決策は、質問への回答によって異なります。すべてのパラメーターは同じ型になるのでしょうか。そうであれば、それぞれが同じように扱われますか?

パラメータが同じ型でない場合、またはより重要なことに同じように扱われない場合は、メソッドのオーバーロードを使用する必要があります。

public class MyClass
{
  public void doSomething(int i) 
  {
    ...
  }

  public void doSomething(int i, String s) 
  {
    ...
  }

  public void doSomething(int i, String s, boolean b) 
  {
    ...
  }
}

ただし、各パラメーターが同じ型であり、同じ方法で処理される場合は、Java で可変引数機能を使用できます。

public MyClass 
{
  public void doSomething(int... integers)
  {
    for (int i : integers) 
    {
      ...
    }
  }
}

明らかに、変数引数を使用する場合、インデックスで各引数にアクセスできますが、ほとんどの場合、設計の問題を示唆しているため、これには反対することをお勧めします。同様に、引数を反復処理する際に型チェックを行っていることに気付いた場合は、設計を確認する必要があります。

于 2013-07-24T14:54:09.353 に答える
18

多くのオブジェクトを出力する void メソッドがあるとします。

public static void print( Object... values){
   for(Object c : values){
      System.out.println(c);
   }
}

上記の例では、0 から N までの値を受け入れる引数として vararge を使用しました。

コメントから: 2 つの文字列と 5 つの整数の場合は??

答え:

print("string1","string2",1,2,3,4,5);
于 2013-07-24T14:37:15.607 に答える
7

可変引数を使用できます

public function yourFunction(Parameter... parameters)

こちらもご覧ください

Java 複数の引数のドット表記 - Varargs

于 2013-07-24T14:38:24.577 に答える