1
22
它遵循C公约。C约定又是基于CPU架构的,CPU架构在堆栈上传递参数。第一个非vararg参数以stackframe中的固定偏移量结束。如果可以将vararg参数放在第一位,那么以下参数的堆栈偏移量将取决于传递的vararg参数数量。这将大大增加访问它们所需的代码量。
在您的示例中,使用
|
2
23
变量参数必须是最后一个,这样编译器才能计算出哪个参数是哪个。
“测试”、“测试”、“测试”、“测试” 进入你的功能
然而,当情况正好相反时
|
3
9
因为这会使语言变得不必要的复杂。想象一下,如果您还允许使用其他语法:
第二种语法表示一个字符串,后跟任意数量的Object类型的参数,后跟一个整数,后跟多个对象。当然,您可以设计一种可以接受类似内容的语言,但如果您还想指定args2必须至少包含一个元素,但args可以为空,该怎么办?为什么我们不能这样做呢?你 能够 设计这样一种语言。 归根结底,你希望规则有多复杂?在这种情况下,他们选择了一个满足需求的简单选项。 |
4
3
编译器无法决定为某些东西选择什么方法(“Hello”、“Hello”)。 |
5
0
给定如何使用带有var args的方法,任何其他格式都可能导致歧义。让瓦拉格一家在最后 这会降低该功能的好处。
当像这样使用时
像这样使用时
|