可変数のパラメーターを許可するメソッドを宣言することは可能ですか?
メソッドが可変数のパラメーターを許可する必要があることを示す定義で使用されているシンボリズムは何ですか?
回答:可変引数
そのとおりです。詳細については、 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.
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
はい、可能です:
public void myMethod(int...numbers) { ... }
引数の種類ごとに、3-dotsがあります:
public void foo(Object... x) {
String first = x.length > 0 ? (String)x[0] : "Hello";
int duration = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
それからそれを呼ぶ
foo("Hii");
foo("Hii", 146);
セキュリティのために、次のように使用します。if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
このアプローチの主な欠点は、オプションのパラメーターが異なる型である場合、静的型チェックが失われることです。 その他のバリエーション をご覧ください。
うん... Java 5以降: http://Java.Sun.com/j2se/1.5.0/docs/guide/language/varargs.html
はいJavaは、method parameterでvargs
を許可します。
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}