• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта

Java Урок 33: КЛАСС, перегрузка методов с переменным количеством аргументов

Метод, который принимает список аргументов переменной длины, можно перегружать.

Скачать исходники для статьи можно ниже

// Параметры vararg и перегрузка,
class VarArgs3 {
   static void vaTest(int ... v) {
      System.out.print("vaTest(int ...): " +
      "Количество аргументов: " + v.length +
      " Содержимое: ");
      for(int x : v)
      System.out.print(x + " ");
      System.out.println() ;
   }
   static void vaTest(boolean ... v) {
      System.out.print("vaTest(boolean ...) " +
      "Количество аргументов: " + v.length +
      " Содержимое: ");
      for(boolean x : v)
      System.out.print(x + " ");
      System.out.println();
   }
   static void vaTest(String msg, int ... v) {
      System.out.print("vaTest(String, int ...): " +
      msg + v.length +
      " Содержимое: ") ;
      for(int x : v)
      System.out.print(x + " ");
      System.out.println();
   }
   public static void main(String args[]){
      vaTest(1, 2 , 3);
      vaTest("Проверка: ", 10, 20);
      vaTest(true, false, false);
   }
}

Эта программа создает следующий вывод.

vaTest(int ...): Количество аргументов: 3 Содержимое: 12 3
vaTest(String, int ...): Проверка: 2 Содержимое: 10 20
vaTest(boolean ...) Количество аргументов: 3 Содержимое: true
false false

Приведенная программа иллюстрирует два возможных способа перегрузки метода с переменным количеством аргументов.

Первый способ — типы его параметра с переменным количеством аргументов могут быть различными. Именно это имеет место в вариантах vaRest (int. . . ) и vaTest (boolean. . . ).
Помните, что конструкция . . . вынуждает компилятор обрабатывать параметр как массив указанного типа. Поэтому, подобно тому, как можно выполнять перегрузку методов, используя различные типы параметров массива, можно выполнять перегрузку методов с переменным количеством аргументов, используя различные типы списков аргументов переменной длины.
В этом случае система Java использует различие в типах для определения нужного варианта перегруженного метода.

Второй способ перегрузки метода с переменным количеством аргументов — добавление одного или нескольких обычных параметров. Именно это было сделано для метода vaTest (String, int. . .). В данном случае для определения нужного метода система Java использует и количество аргументов, и их тип.

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

Например, в приведенной ранее программе метод vaTest() может быть перегружен методом vaTest(int х).
Эта специализированная версия вызывается только при наличии аргумента int.
В случае передачи методу двух и более аргументов типа int программа будет использовать версию метода vaTest (int. . . v) с переменным количеством аргументов.

Добавить комментарий