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

Java Урок 65: ОБОБЩЕНИЯ, коллекции и обобщения

Вероятно, в наибольшей степени влияние обобщений испытали на себе коллекции.

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

Реально более 90 процентов случаев, когда вы будите сталкиваться с обобщениями это обобщения в коллекциях.

После появления обобщений все коллекции были полностью перепроектированы. Теперь все коллекции изначально обобщены и многие методы, оперирующие коллекциями, также принимают обобщенные параметры.
Обобщения это то, чего не хватало коллекциям. Это – безопасность типов.
Раньше все коллекции хранили ссылки на класс Object, а это означало, что любая коллекция могла хранить объекты любого типа. Таким образом, можно было непреднамеренно сохранить несовместимые типы в одной коллекции. Это могло привести к ошибкам несовместимости типов во время выполнения.

Пример:

public class Main {
   public static void main(String[] args) {
      Car car1 = new Car("KIA");
      Car car2 = new Car("AUDI");
      Car car3 = new Car("RENO");
      BMW bmw1 = new BMW("BMW 5x", 10000);
      BMW bmw2 = new BMW("BMW 4x", 9000);
      BMW bmw3 = new BMW("BMW 3x", 8000);
      ArrayList<Car> carArray = new ArrayList<>();
      carArray.add(car2);
      carArray.add(car1);
      carArray.add(bmw2);
      carArray.add(car3);
      ArrayList<BMW> bmwArray = new ArrayList<>();
      bmwArray.add(bmw3);
      bmwArray.add(bmw1);
      bmwArray.add(bmw2);

      Main.outArray1(carArray);
      System.out.println();
      Main.outArray1(bmwArray);
      System.out.println();
      Main.outArray2(bmwArray);
   }

   static public void outArray1(ArrayList<? extends Car> carAr) {
      for (Car c : carAr) {
         System.out.println(c.name);
      }
   }

   static public void outArray2(ArrayList<BMW> carA) {
      for (BMW c : carA) {
         System.out.println(c.name + " " + c.cost + " рублей");
      }
   }
}

public class Car {
   String name;

   Car(String name) {
      this.name = name;
   }
}

public class BMW extends Car {
   int cost;

   BMW(String name, int cost) {
      super(name);
      this.cost = cost;
   }
}

Программа имеет следующий выход:
AUDI
KIA
BMW 4x
RENO

BMW 3x
BMW 5x
BMW 4x

BMW 3x 8000 рублей
BMW 5x 10000 рублей
BMW 4x 9000 рублей

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