方法的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; 
   }
}