'String ...'是什么意思?

Dav*_*lva 9 java language-construct

在代码中:

public interface ProductInterface {

    public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;

}
Run Code Online (Sandbox Code Playgroud)

是什么

String... pricingTypes
Run Code Online (Sandbox Code Playgroud)

意思?这是什么类型的构造?

ζ--*_*ζ-- 7

它被称为varargs.它适用于任何类型,只要它是签名中的最后一个参数.

基本上,任何数量的参数都放入一个数组中.这并不意味着它等同于数组.

一种看起来像这样的方法:

void foo(int bar, Socket baz...)
Run Code Online (Sandbox Code Playgroud)

将有一个名为baz的Socket 数组(在本例中).

所以,如果我们调用,foo(32, sSock.accept(), new Socket())我们将找到一个包含两个Socket对象的数组.

调用它作为foo(32, mySocketArray)作为类型时工作被配置为采取的阵列.但是,如果签名是数组的变量,则可以传递一个或多个数组并获得二维数组.例如,void bar(int bar, PrintStream[] baz...)可以使用多个PrintStream数组并将它们粘贴到一个数组中PrintStream[][].

奇怪的是,由于数组是对象,Object... foo可以使用任意数量的数组.


Bra*_*ody 4

这是一个 vararg - 变量参数。您可以根据需要多次传递该类型的值,调用者会将其作为数组获取。

http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html