在Java中,varargs是在调用方法时用于创建数组的语法糖。例如,这两个调用是等效的:
void foo(String... args) { ... }foo("hello", null, "world", xyz); // Java 1.5+foo(new String[]{"hello", null, "world", xyz}); // All versions of Java
Varargs并没有使任何新事物成为可能(通过语法糖的定义),但是它减少了冗长性,并使某些构造更易于实现。例如,一些我最喜欢的可变参数的用途包括:
PrintStream.printf(),
String.format(),
Method.invoke()。
varargs的其他良好应用:
// This one is in the Java standard libraryCollections: void addAll(Collection<? super T> c, T... elements);// Custom examplesint max(int... nums);void doOperation(File x, String y, SomeEnum options...);
此外,Java的varargs使语言与C,Python,Javascript和其他语言中的vararg支持达到同等地位。因此,如果经常使用的设计(例如
max())与varargs一起使用效果最好,则Java不再是需要较丑陋的实现的奇怪语言。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)