方法的Java变量数或参数
是否可以声明一个允许可变数量参数的方法 定义中使用的符号表示方法应允许可变数量的参数是什么方法的Java变量数或参数,java,methods,arguments,parameter-passing,variadic-functions,Java,Methods,Arguments,Parameter Passing,Variadic Functions,是否可以声明一个允许可变数量参数的方法 定义中使用的符号表示方法应允许可变数量的参数是什么 回答:varargs没错。你可以在中找到更多关于它的信息 下面是一个例子: void foo(String... args) { for (String arg : args) { System.out.println(arg); } } 这可以称为 foo("foo"); // Single arg. foo("foo", "bar"); // Multiple arg
回答:varargs没错。你可以在中找到更多关于它的信息 下面是一个例子:
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.
是的……因为Java 5:是的,有可能:
public void myMethod(int... numbers) { /* your code */ }
可以向方法传递数量可变的参数。但是,
以下是一些限制:
- 变量数量的参数必须都是相同的类型
- 它们在方法中被视为一个数组
- 它们必须是方法的最后一个参数
为了理解这些限制,请考虑以下代码段中的方法,用于返回整数列表中的最大整数:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
source Oracle认证助理Java SE 7程序员学习指南2012对于不同类型的参数,有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)){抛出新的IllegalArgumentException(“…”;}
这种方法的主要缺点是,如果可选参数的类型不同,则会丢失静态类型检查。
请看
是Java允许在方法参数中使用
vargs
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}
可以做各种类型的参数吗?e、 g.(字符串…字符串,整数…整数)。任何顺序的任何类型的参数如何?@trusktr:如果您想要任何对象,只需使用
object…
@trusktr不,原语不是对象。这里有一个很好的解释:@Richard:使用Object。。。args
将与原语一起工作,因为。@StevenVascellaro:我假设参数像数组一样处理,所以您可能只需执行varargs.length
由于它是一个家庭作业,我们不想知道您的问题,我们只想知道您正在学习。
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}