【发布时间】:2012-03-11 11:44:39
【问题描述】:
为什么varargs必须是方法签名中的最后一个参数?
我想知道原因。
【问题讨论】:
-
如果不是这样,那么在方法使用中,编译器如何找出varargs结束和下一个方法arg开始的地方?
-
可以通过首先识别非可变参数并将其余的作为可变参数来区分可变参数,无论它们出现在开头还是结尾。目前,如果有五个参数,最后一个是可变参数,那么它会被解析为第四个之后的参数是可变参数。这也可以反过来,就像如果有五个参数,第一个作为可变参数,从头到尾解析,就像最后四个是正常的,除了最后四个之外的任何东西都是第一个可变参数的一部分 :) 我认为它刚刚实现这样,因为到目前为止还没有真正的需要
-
在此处查看对
C family of language创作者的采访 [C 家庭采访](gotw.ca/publications/c_family_interview.htm) 其中 Gosling 说:“我有一条个人规则,我没有放任何东西只是因为我觉得这很酷。因为我一直都有一个用户社区,所以我会等到几个人联合起来攻击我,然后再插入任何东西。如果有人说,“哦,那不是很酷”并且我忽略了他们,直到两三个人走过来对我说“Java 应该这样做。”然后我就开始了,好吧,也许人们会真正使用它。”
标签: java parameters variadic-functions method-signature