JAVA操作人员

JAVA操作人员,java,variadic-functions,Java,Variadic Functions,在肮脏的富客户机中,显示以下代码: 公共ImageLoadingWorker(JTextArea日志、JPanel查看器、字符串…文件名){} 到底什么是。。。什么意思 它用于。它是varargs,在java 5中是新的。这意味着您可以在方法调用中拥有任意数量的文件名。这意味着您可以使用名为文件名的字符串数组访问从第三个参数开始传递给ImageLoadingWorker的所有参数,例如“foo”,“bar”,“汽车”、“公共汽车”等。它被称为varargs。为了进一步解释,以下两个电话均有效

在肮脏的富客户机中,显示以下代码:


公共ImageLoadingWorker(JTextArea日志、JPanel查看器、字符串…文件名){}


到底什么是。。。什么意思

它用于。

它是varargs,在java 5中是新的。这意味着您可以在方法调用中拥有任意数量的文件名。

这意味着您可以使用名为
文件名
字符串
数组访问从第三个参数开始传递给
ImageLoadingWorker
的所有参数,例如“foo”,“bar”,“汽车”、“公共汽车”等。它被称为
varargs
。为了进一步解释,以下两个电话均有效:

ImageLoadingWorker(log, viewer, "foo", "bar")

ImageLoadingWorker(log, viewer, "foo", "bar", "car", "bus")

从方法(或构造函数,在您的例子中)本身的角度来看,这只是写入“[]”的另一种方式,并且只对方法的最后一个参数有效。也就是说,该方法在filenames参数中获取字符串数组

对于该方法的调用者(即编写调用该方法的代码的人),它更好:他们可以选择是提供一个
String[]
对象还是提供任意数量的
String
对象(从0到方法大小限制允许的范围),然后编译器使用这些对象为您创建一个数组

所以,打电话的时候你现在可以写信了

 ... = new ImageLoadingWorker(area, viewer, file1, file2, file3);
编译器会创建

 ... = new ImageLoadingWorker(area, viewer, new String[]{file1, file2, file3});
给你

(如果有另一种方法使用精确数量的字符串和相同的其他参数,则首选该方法而不是varargs方法。)


当使用包含类型变量(对于varargs参数)的参数化类型调用这样的方法(或构造函数)时,编译器会发出警告,因为他无法真正创建这样的数组,而是将使用擦除类型的数组。

不能说我见过它,但我每年使用Java大约3次,所以这并不奇怪(对我)我从未见过它。可能是它的复制品
 ... = new ImageLoadingWorker(area, viewer, new String[]{file1, file2, file3});