Мы помогаем ИТ-компаниям оптимально настроить процессы менеджмента и разработки

Найти

(067) 536-87-70

(095) 492-65-67

 

Java 8

29.05.20

Сегодня поговорим немного про некоторые нововведения в Java 8. Почему именно про них? В данный момент большинство компаний при создании приложений используют именно эту версию.

java 8

Начнем с интерфейсов:

  • можно создавать default методы - методы с реализацией по-умолчанию. Это сделано для того, чтобы при расширении интерфейса все, кто его использовали не упали с ошибками при компиляции.
  • функциональные интерфейсы - это интерфейс с всего одним единственным абстрактным методом. Такой интерфейс предоставляет тип соответствующий определенному лямбда-выражению.

Лямбда-выражения - реализация метода, определенного в функциональном интерфейсе. Стандартный вид лямбды: список параметров ->; тело, где выполняются действия.

  Пример: 

            List<String> names = Arrays.asList(“Ann”, “Den”, “Ben”, “Alice”);

            Анонимный компаратор
            Collections.sort(names, new Comparator<String>(){
                      @Override
                      public int compare(String a, String b) {
                               return b.compareTo(a);
                      }
            });

            Теперь можно заменить на лямбда-выражение
            Collections.sort(names, (String a, String b)) -> {
                      return b.compareTo(a);
            });

Также теперь можно ссылаться на методы и конструкторы при помощи оператора ::

Пример:

         AppleFactory<Apple> appleFactory = Apple::new; //ссылка на конструктор
         Expression expression = ExpretionUtils::isEven; //ссылка на метод

Помимо всего была добавлена такая функциональность как потоки - Streams.

Мы можем создать stream (из коллекции), применить промежуточные операции и применить терминальную операцию. Потоки ленивы, то есть они не будут ничего выполнять пока не вызовется терминальная операция.

Пример:

         List<Integer> listOfNumbers = Arrays.asList(1,2,3,4,5);
         //взаимодействие stream api и лямбда-выражений
         int quantity = listOfNumbers.stream().reduce((x,y) -> x+y).get(); //15

В Java 8 много новинок помимо этих и, прочитав данную статью, можно с легкостью погрузится в пучину новинок Java 8. По собственному опыту скажу, что иначе, как с практикой, не придет полное понимание лямбда-выражений и Stream API.

Весь цикл читайте на страничке Сергея Посьмашного

 

 

 

Автор

photo
Сергей Посьмашный
Java blogger, физик, путешественник