【问题标题】:Passing variable parameters in Java在Java中传递可变参数
【发布时间】:2015-03-03 06:28:37
【问题描述】:

我想创建一个方法,有时会传递两个参数,但有时只传递一个参数而不传递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中有这样的东西吗?我在这里有什么选择吗?提前致谢。

【问题讨论】:

  • 不传递 null - 不,您必须至少传递 null。
  • 您是否真的尝试过您发布的代码?它按原样工作(一旦为 Animal 方法声明了正确的返回类型,除非它是构造函数,在这种情况下它应该与类的名称匹配)
  • @TheLostMind 不,使用可变参数您不必传递空值。
  • Eran - 我想避免以后遍历zero_Or_MoreArguments。这可能吗?

标签: java parameters parameter-passing


【解决方案1】:

是的,它叫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]
    }
}

【讨论】:

  • 8 分钟前提问,7 分钟前回答。哇!
【解决方案2】:

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

在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

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2023-03-18
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多