Java "params" в сигнатуре метода?
В C#, если вы хотите, чтобы метод имел неопределенное количество параметров, вы можете сделать окончательный параметр в сигнатуре метода a params
Так что параметр метода выглядит как массив, но позволяет всем, кто использует метод, передавать столько параметров этого типа, сколько хочет вызывающий.
Я уверен, что Java поддерживает подобное поведение, но я не могу выяснить, как это сделать.
3 ответов
в Java это называется С varargs, и синтаксис выглядит как обычный параметр, но с троеточием ("...") после типа:
public void foo(Object... bar) {
for (Object baz : bar) {
System.out.println(baz.toString());
}
}
параметр vararg должен всегда быть последние параметр в сигнатуре метода и доступен, как если бы вы получили массив этого типа (например,Object[]
в данном случае).
это сделает трюк в Java
public void foo(String parameter, Object... arguments);
вы должны добавить три очка ...
и varagr
параметр должен быть последним в сигнатуре метода.
как написано на предыдущих ответах, это varargs
и заявил с ellipsis
(...)
кроме того, вы можете передать типы значений и / или ссылочные типы или оба смешанных (google Автоупаковка). Кроме того, вы можете использовать параметр method в качестве массива, как показано в printArgsAlternate
метод ниже.
Код
public class VarargsDemo {
public static void main(String[] args) {
printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
}
private static void printArgs(Object... arguments) {
System.out.print("Arguments: ");
for(Object o : arguments)
System.out.print(o + " ");
System.out.println();
}
private static void printArgsAlternate(Object... arguments) {
System.out.print("Arguments: ");
for(int i = 0; i < arguments.length; i++)
System.out.print(arguments[i] + " ");
System.out.println();
}
}
выход
Arguments: 3 true Hello! true 25.3 a X
Arguments: 3 true Hello! true 25.3 a X