Подтвердить что ты не робот

Использование эллипсиса (...) в Java?

Я просматривал код и видел следующие обозначения. Я несколько не уверен, что означают три точки и что вы их называете.

void doAction(Object...o);

Спасибо.

4b9b3361

Ответ 1

Это означает, что этот метод может принимать более одного объекта в качестве параметра. Чтобы лучше занизить, проверьте следующий пример здесь:

Эллипсис (...) идентифицирует переменное число аргументов и продемонстрированный в следующем методе суммирования.

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}

Вызвать метод суммирования с таким количеством целых чисел с разделителями-запятыми аргументы, которые вы хотите - в пределах JVM. Некоторые примеры: sum (10, 20) и суммы (18, 20, 305, 4).

Это очень полезно, так как позволяет вашему методу стать более абстрактным. Проверьте также этот приятный пример от SO, если пользователь использует... нотацию для создания метода для конкатенации строковых массивов в Java.

Другой пример из Метод переменных в Java 5

public static void test(int some, String... args) {
        System.out.print("\n" + some);
        for(String arg: args) {
            System.out.print(", " + arg);
        }
    }

Как упоминается в разделе комментариев:

Также обратите внимание, что если функция передает другие параметры разных тип, чем параметр varargs, параметр vararg должен быть последним параметр в объявлении функции public void test (Typev... v, Type1 a, Type2 b) или public void test (Type1 a, Typev... v recipientJids, Type2 b) - незаконно. ТОЛЬКО публичный тест void (Type1 a, Type2 b, Typev... v)

Ответ 2

Он называется VarArgs http://www.javadb.com/using-varargs-in-java. В этом случае это означает, что вы можете поместить несколько экземпляров Object в качестве параметра toAction() столько, сколько хотите:

doAction(new Object(), new Object(), new Object());

Ответ 3

Я напишу вам пример, чтобы объяснить, что они означают (...).

Вы можете определить параметр, который может принимать переменные аргументы (varargs) в ваших методах. Ниже приведен пример класса Employee, который определяет метод daysOffWork, который принимает переменные аргументы:

class Employee { 
   public int daysOffWork(int... days) {
         int daysOff = 0;
         for (int i = 0; i < days.length; i++)
         daysOff += days[i];
         return daysOff;
        } 
}

Эллипсис (...), следующий за типом данных, указывает, что параметр метода

дней может быть передан массив или несколько значений, разделенных запятыми.