Java对不定长度参数的支持

1.  J2SE 5.0开始支持不定长度参数(Variable-length Argument),如下代码:

   

public class MathTool
{
        public static int sum(int...  nums)   //使用...声明参数
             { 
                   int sum = 0;
                   for(int num : nums)
                     {
                           sum += num;
                     }
                   return sum;
             }
}

public class TestVarargs
{
        public static void main(String[] args)
            {
                  int sum = 0;
             
                  sum = MathTool.sum(1,2);
                  System.out.println("1 + 2 = " + sum);
              
                  sum = MathTool.sum(1,2,3);
                  System.out.println("1 + 2 + 3 = " + sum);

                  sum = MathTool.sum(1,2,3,4,5);
                  System.out.println("1 + 2 + 3 + 4 + 5 = " + sum);
            }
}

      要使用不定长度参数,在声明参数行时要在类型关键词后加上...,而在sum()方法的区块中可以看到,实际上nums是一个数组,编译器会将参数行的(int... nums)解释为(int[] nums).

      编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长度参数的功能也是J2SE 5.0所提供的编译蜜糖(Compiler Sugar).

      在方法上使用不定长度参数时,记得必须声明的参数必须设定在参数行的最后一个。例如下面的方式是合法的:

  

public void someMethod(int arg1, int arg2, int... varargs)
{
      //...
}

     但下面的方式就不合法了,只能将不定长度参数放在参数行的最后一个,而且不支持两个及两个以上的不定长度参数。

   

public void someMethod(int... varargs, int arg1, int arg2)
{
      //...
}

public void someMethod(int... varargs1, int... varargs2)
{
      //...
}

   如果使用对象的不定长度参数,声明的方法相同,如:

 

public void someMethod(SomeClass... somes)
{
    //...
}

 

你可能感兴趣的:(java,J2SE)