【问题标题】:The var args parameters should be last in parameter list [duplicate]var args 参数应该在参数列表中的最后一个 [重复]
【发布时间】:2013-08-16 10:54:40
【问题描述】:
public void test(int... integers, String str) { // error
   ...  
}

错误:

方法test的变量参数类型int必须是最后一个参数。

public void test(String str, int... integers) {}

效果很好。这有什么原因吗?

【问题讨论】:

标签: java variadic-functions


【解决方案1】:

好吧,考虑一下这个方法签名:

public void test(int... integers, float val, float val2)

现在,当您调用此方法时:

test(2, 3, 4, 5, 6, 7);

编译器将如何决定何时停止向int... 类型参数添加参数?请记住,参数是从 Java 中的 left-to-right 评估的。这就是为什么var-args 应该在最后。因此,该编译器可以首先分配固定参数,然后将其余参数转到var-args

【讨论】:

  • 为什么编译器看不到 6 和 7 必须是浮点参数,因此 2,3,4,5 是整数?请注意,参数仍将在运行时从左到右进行评估。只要只有一个可变参数,它就可以在参数列表中的任何位置。其他一切都暗示了懒惰的编译器作者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多