【问题标题】:Using multiple varags in method parameters? [duplicate]在方法参数中使用多个可变参数? [复制]
【发布时间】:2015-09-16 05:43:31
【问题描述】:

在 java 中有什么方法可以创建一个需要两个不同 varargs 的方法?我知道,使用相同的对象类型是不可能的,因为编译器不知道从哪里开始或结束。但是为什么不同的对象类型也不可能呢?例如:

private void ask(int... x, String... b) { }

请解释一下!

【问题讨论】:

  • @NeilLocketz 这几乎是完美的复制品
  • @Cinnam :P 我希望有一个“重复的”而不是“可能的重复”
  • @NeilLocketz 确实 :) 谷歌在其他任何地方都没有找到这个文本,这表明 OP 甚至已经看到了更早的问题......但谁知道
  • ask(() -> {1, 2, 3}, () -> {"A", "B", "C"})调用不能使用ask(Supplier<Integer[]> x, Supplier<String[]> b)很烦人

标签: java


【解决方案1】:

Java 不支持多个可变参数。 声明可变参数的规则。

  • Var-arg 类型 声明 var-arg 参数时,必须指定 您的方法的此参数可以接收的参数类型。 (这个可以 是原始类型或对象类型。)
  • 基本语法 要使用 var-arg 参数声明方法,请遵循 键入省略号 (...)、空格,然后是要执行的数组的名称 保留接收到的参数。
  • 其他参数 在使用的​​方法中有其他参数是合法的 一个可变参数。
  • Var-args 限制 var-arg 必须是方法的最后一个参数 签名,并且一个方法中只能有一个 var-arg。

但你仍然使用集合类或接口来归档它。

【讨论】:

    【解决方案2】:

    在 Java 中,方法参数中不允许有多个可变参数。只允许一个可变参数,它必须是方法签名的最后一个参数。

    但是您可以通过传递两个数组来实现这一点(在您的情况下为 int[] x, String[] b)。

    private void ask(int[] x, String[] b) { }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      相关资源
      最近更新 更多