Страницы

Поиск по вопросам

вторник, 26 ноября 2019 г.

Что значит “->” в Java?


Изучаю данный туториал. На некоторых скриншотах есть конструкция ->, например:

vertx.deployVerticle("com.mycompany.MyOrderProcessorVerticle", res -> {
  if (res.succeeded()) {
    System.out.println("Deployment id is: " + res.result());
  } else {
    System.out.println("Deployment failed!");
  }
});


Не сталкивался раньше с таким. Подскажите, пожалуйста, что это такое и где можн
об этом почитать хорошие материалы.
    


Ответы

Ответ 1



Это лямбда выражение - анонимная функция. Проще говоря, это метод без объявлени (без модификаторов доступа, возвращающие значение и имя). Появились в 8 версии Java. Пример использования Напишем простой пример функционального интерфейса : public interface Lambda { //Метод интерфейса с отсутсвующей реализацией int getDoubleValue(int val); //Метод интерфейса с реализацией по-умолчанию default void printVal(int val) { System.out.println(val); } } Функциональный интерфейс должен иметь только один абстрактный метод. Прочитать причинах такого ограничения можно здесь. Теперь создадим класс для использования public class ClassForLambda { public static void main(String[] args) { //Объявляем ссылку на функциональный интерфейс Lambda lam; //Параметр для нашего абстрактногго метода int num =9; //Прописываем первый вариант реализации lam = (val) -> val * 2; System.out.println(lam.getDoubleValue(num)); //Прописываем второй вариант реализации lam = (val) -> { System.out.println("Your number is "+val); return val * 2; }; System.out.println(lam.getDoubleValue(num)); } } Как можно заметить, обращение к методу не изменилось. Изменению подверглась только реализация. Ссылки: Хабр JavaRush Еще один ответ на StackOverflow

Комментариев нет:

Отправить комментарий