在代码中:
public interface ProductInterface {
public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;
}
什么是
String... pricingTypes
意思?这是什么类型的构造?
答案 0 :(得分:7)
它被称为varargs。它适用于任何类型,只要它是签名中的 last 参数。
基本上,任何数量的参数都放入数组中。这并不意味着它等同于数组。
一种看起来像这样的方法:
void foo(int bar, Socket baz...)
将有一个名为baz的Socket(在本例中)的数组。
因此,如果我们调用foo(32, sSock.accept(), new Socket())
,我们将找到一个包含两个Socket对象的数组。
将其称为foo(32, mySocketArray)
将不工作,因为该类型未配置为接收数组。但是,如果签名是数组的变量,则可以传递一个或多个数组并获得二维数组。例如,void bar(int bar, PrintStream[] baz...)
可以使用多个PrintStream数组并将它们粘贴到单个PrintStream[][]
中。
奇怪的是,由于数组是对象,Object... foo
可以使用任意数量的数组。
答案 1 :(得分:2)
这是一个vararg变量参数。您可以根据需要多次传递该类型的值,并且调用者将其作为数组获取。
http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html