use*_*514 137 java methods arguments parameter-passing variadic-functions
是否可以声明一个允许可变数量参数的方法?
定义中使用的符号是什么,表明该方法应该允许可变数量的参数?
答案: varargs
Bal*_*usC 258
那是对的.您可以在varargs的Oracle指南中找到更多相关信息.
这是一个例子:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
Run Code Online (Sandbox Code Playgroud)
可称为
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.
Run Code Online (Sandbox Code Playgroud)
小智 15
Variable number of arguments
Run Code Online (Sandbox Code Playgroud)
可以将可变数量的参数传递给方法.但是,有一些限制:
要了解这些限制,请考虑以下代码片段中的方法,该方法用于返回整数列表中的最大整数:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
Run Code Online (Sandbox Code Playgroud)
来源Oracle认证助理Java SE 7程序员学习指南2012
Dol*_*lph 13
是的,这是可能的:
public void myMethod(int...numbers) { ... }
Run Code Online (Sandbox Code Playgroud)
对于不同类型的参数,有3个点:
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;
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给它
foo("Hii");
foo("Hii", 146);
Run Code Online (Sandbox Code Playgroud)
为安全起见,使用如下:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
这种方法的主要缺点是,如果可选参数属于不同类型,则会丢失静态类型检查.请看更多变化.
归档时间: |
|
查看次数: |
180475 次 |
最近记录: |