【问题标题】:Java method with unlimited arguments具有无限参数的 Java 方法
【发布时间】:2011-11-06 18:34:07
【问题描述】:

Spring 框架使用的方法可以传递任意数量的参数。

我想编写一个也可以获取无限量数据的函数。这个功能是如何命名的,以便我可以阅读它?或者我该如何定义?

【问题讨论】:

  • 哪个类有这个方法?也许就像 static main(String[] args)
  • 定义“无限数据量”。

标签: java methods arguments


【解决方案1】:

它叫varargs

它允许一个方法接受任意数量的参数。它们可以作为方法中的数组访问:

public void foo(String... args) {
    for (String arg : args) {
      // do smth with arg.
     }
}

这是syntactic sugar。编译器隐藏了数组的创建,所以不是

 bar.foo(new String[] {"1", "2", "3"});

你写

 bar.foo("1", "2", "3");

【讨论】:

  • 您的第一个链接不再有效。当前链接是docs.oracle.com/javase/8/docs/technotes/guides/language/…
  • 私有列表 products = new ArrayList(); public void addProduct(Product...args){ products.add(args);这给出了一个错误“无法应用列表”我希望该方法采用无限数量的参数 I.E cart.addProduct(toothbrush, shampoo...)
【解决方案2】:

要添加 Bozho 的答案,您还可以在 varargs 之前在方法中添加其他参数:

// foo(13, "foo", "bar", "baz");
// will print:
// 13 - |foo||bar||baz|
public void foo(int a, String... b) {
    System.out.println(a + " - ");

    for (String c : b) {
        System.out.print("|" + c + "|");
    }
}

但是你不能有不同类型的参数。这些不起作用:

public void bar(String... b, int b);
public void foo(int a, String... b, int b);

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多