在C#中,如果希望方法具有不确定数量的参数,则可以在方法签名中将最终参数设为a params
,以使方法参数看起来像数组,但允许使用该方法的每个人传递尽可能多的该类型的参数如来电者所愿。
我相当确定Java支持类似的行为,但是我不知道如何做到这一点。
在C#中,如果希望方法具有不确定数量的参数,则可以在方法签名中将最终参数设为a params
,以使方法参数看起来像数组,但允许使用该方法的每个人传递尽可能多的该类型的参数如来电者所愿。
我相当确定Java支持类似的行为,但是我不知道如何做到这一点。
Answers:
正如在先前答案中所写的那样,它是varargs
用ellipsis
(...)声明的。
此外,您可以传递值类型和/或引用类型,也可以将两者混合使用(google Autoboxing)。另外,您可以将method参数用作数组,如printArgsAlternate
下面的方法所示。
public class VarargsDemo {
public static void main(String[] args) {
printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
}
private static void printArgs(Object... arguments) {
System.out.print("Arguments: ");
for(Object o : arguments)
System.out.print(o + " ");
System.out.println();
}
private static void printArgsAlternate(Object... arguments) {
System.out.print("Arguments: ");
for(int i = 0; i < arguments.length; i++)
System.out.print(arguments[i] + " ");
System.out.println();
}
}
Arguments: 3 true Hello! true 25.3 a X
Arguments: 3 true Hello! true 25.3 a X