在代码中:
public interface ProductInterface {
public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;
}
What doesString... pricingTypes
mean?这是什么类型的结构?
在代码中:
public interface ProductInterface {
public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;
}
What doesString... pricingTypes
mean?这是什么类型的结构?
它被称为可变参数。只要它是签名中最后一个参数,就可以使用任何类型。
基本上,任意数量的参数都被放入数组中。这并不意味着它等同于数组。
一个看起来像这样的方法:
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
可以接受任意数量的数组。
这是一个可变参数,也叫作vararg。你可以传递任意次数的该类型值,调用者将其作为数组接收。
http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html