Java "params" в сигнатуре метода?
В C#, если вы хотите, чтобы метод имел неопределенное количество параметров, вы можете сделать окончательный параметр в сигнатуре метода a params
Так что параметр метода выглядит как массив, но позволяет всем, кто использует метод, передавать столько параметров этого типа, сколько хочет вызывающий.
Я уверен, что Java поддерживает подобное поведение, но я не могу выяснить, как это сделать.
3 ответа:
в Java это называется varargs, и синтаксис выглядит как обычный параметр, но с троеточием ("...") после типа:
public void foo(Object... bar) { for (Object baz : bar) { System.out.println(baz.toString()); } }
параметр с переменным числом аргументов должно всегда быть последние параметр в сигнатуре метода и доступен, как если бы вы получили массив этого типа (например,
Object[]
в данном случае).
Это будет делать трюк в Java
public void foo(String parameter, Object... arguments);
вы должны добавить три очка
...
иvaragr
параметр должен быть последним в сигнатуре метода.
как написано на предыдущих ответах, это
varargs
и заявил сellipsis
(...)кроме того, вы можете либо передать типы значений и / или ссылочные типы, либо оба смешанные (google Автоупаковка). Кроме того, вы можете использовать параметр метода в виде массива, как показано на рисунке с
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