What does 'String...' mean?
В коде:
public interface ProductInterface {
public List<ProductVO> getProductPricing(ProductVO product, ProductVO prodPackage, String... pricingTypes) throws ServiceException;
}
Что значит
String... pricingTypes
имею в виду? What type of construct is this?
2 ответа
Это называется варагс. Это работает для любого типа, пока это последний аргумент в подписи.
В принципе, любое количество параметров помещается в массив. Это не значит, что он эквивалентен массиву.
Метод, который выглядит так:
void foo(int bar, Socket baz...)
будет иметь массив Socket (в этом примере) с именем baz.
Итак, если мы позвоним 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