メソッドのJava変数番号または引数


146

可変数のパラメーターを許可するメソッドを宣言することは可能ですか?

メソッドが可変数のパラメーターを許可する必要があることを示す定義で使用される記号は何ですか?

回答:可変引数


11
宿題なので、私たちはあなたの質問を知りたくありません。あなたが学んでいることを知りたいだけです。
HDave 2013年

回答:


274

そのとおりです。詳細については、varargsのOracleガイドを参照してください

次に例を示します。

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

と呼ぶことができる

foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.

1
さまざまなタイプのパラメータを実行することは可能ですか?例(String ... strs、int ... ints)。どのような種類の引数も任意の順序でどうですか?
trusktr 2013年

5
@trusktr:オブジェクトが必要な場合は、を使用してくださいObject...
BalusC 2013年

2
@trusktrいいえ、プリミティブはオブジェクトではありません。ここでの違いの偉大な説明があります:programmerinterview.com/index.php/java-questions/...
ディック・ルーカス

5
@Richard:オートボクシングのObject... argsため、プリミティブで使用できます。
Sumit

1
@StevenVascellaro:引数は配列のように処理されると想定しているので、おそらく単純に行うことができますvarargs.length
LMD

15
Variable number of arguments

可変数の引数をメソッドに渡すことができます。ただし、いくつかの制限があります。

  • 可変数のパラメーターはすべて同じ型でなければなりません
  • メソッド内では配列として扱われます
  • それらはメソッドの最後のパラメーターでなければなりません

これらの制限を理解するために、整数のリストで最大の整数を返すために使用される次のコードスニペットのメソッドを検討してください。

private static int largest(int... numbers) {
     int currentLargest = numbers[0];
     for (int number : numbers) {
        if (number > currentLargest) {
            currentLargest = number;
        }
     }
     return currentLargest;
}

出典Oracle Certified Associate Java SE 7 Programmer Study Guide 2012


14

はい、可能です:

public void myMethod(int... numbers) { /* your code */ }

10

さまざまなタイプの引数には、3つのドットがあります。

public void foo(Object... x) {
    String myVar1  = x.length > 0 ? (String)x[0]  : "Hello";
    int myVar2     = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
} 

それを呼び出す

foo("Hii"); 
foo("Hii", 146); 

セキュリティのために、次のように使用します:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

このアプローチの主な欠点は、オプションのパラメーターが異なる型である場合、静的型チェックが失われることです。その他のバリエーションをご覧ください。



0

はいJava vargsはメソッドパラメータで許可します。

public class  Varargs
{
   public int add(int... numbers)
   { 
      int result = 1; 
      for(int number: numbers)
      {
         result= result+number;  
      }  return result; 
   }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.