Номер переменной Java или аргументы для метода
Можно объявить метод, который позволит переменное число параметров?
Каков символизм, используемый в определении, указывающий, что метод должен допускать переменное количество параметров?
Ответ: varargs
Ответы
Ответ 1
Это правильно. Вы можете найти больше об этом в руководстве Oracle по varargs.
Вот пример:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
который можно назвать
foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.
Ответ 2
Да, возможно:
public void myMethod(int...numbers) { ... }
Ответ 3
Variable number of arguments
Можно передать переменное количество аргументов в метод. Однако там
есть некоторые ограничения:
- Переменные числа параметров должны быть одного типа
- Они рассматриваются как массив внутри метода
- Они должны быть последним параметром метода
Чтобы понять эти ограничения, рассмотрите метод в следующем фрагменте кода, который используется для возврата наибольшего целого числа в список целых чисел:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
источник Учебное пособие для программистов по программе Oracle Certified Associate Java SE 7 2012
Ответ 4
Yup... поскольку Java 5: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Ответ 5
Если вы можете использовать разные типы аргументов, используйте:
public void foo(Object... x) {
String first = x.length > 0 ? (String)x[0] : "Hello";
int duration = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
foo("Hii", );
foo("Hii", 146);
для обеспечения безопасности используйте следующее:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
Основным недостатком этого подхода является то, что если необязательные параметры имеют разные типы, вы теряете контроль статического типа. Пожалуйста, смотрите больше вариантов.
Ответ 6
Да Java разрешает vargs в параметре метода.
class Varargs{public int add(int... numbers){ int result = 1; for(int number: numbers){result= result+numbers; } return result; }}