在Java中传递变量参数

时间:2015-03-03 06:28:37

标签: java parameters parameter-passing

我想创建一个方法,有时会传递两个参数,但有时只传递一个而不传递null(空)参数。我知道我可以做方法重载,但我一直在寻找类似下面的功能,而不需要稍后进行迭代:

class MyObject {

    int id;
    int[] zero_Or_MoreArguments;

    Animal(int id, int... zero_Or_MoreArguments) {
        this.id = id;
        this.zero_Or_MoreArguments = zero_Or_MoreArguments;
    }
}

Java中有这样的东西吗?我有什么选择吗?提前谢谢。

2 个答案:

答案 0 :(得分:4)

是的,它被称为varargs

稍微修改您的示例以显示其工作原理:

class MyObject {

    int id;
    int[] zero_Or_MoreArguments;

    MyObject(int id, int... zero_Or_MoreArguments) {
        this.id = id;
        this.zero_Or_MoreArguments = zero_Or_MoreArguments;
    }

    public static void main(String[]args) {
        MyObject mo = new MyObject(1, 2, 3, 4);
        System.out.println(Arrays.toString(mo.zero_Or_MoreArguments)); // prints [2, 3, 4]
    }
}

答案 1 :(得分:1)

您需要的是变量参数列表。

在Java中可以用作:

static void vaTest(String msg, int ... no) {
  System.out.print("vaTest(String, int ...): " +
  msg +"no. of arguments: "+ no.length +" Contents: ");
  for(int  n : no)
  System.out.print(n + " ");
  System.out.println();
}

完整示例:Java Examples - Use varargs with method overloading