Страницы

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

среда, 3 октября 2018 г.

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

Изучаю данный туториал. На некоторых скриншотах есть конструкция ->, например:
vertx.deployVerticle("com.mycompany.MyOrderProcessorVerticle", res -> { if (res.succeeded()) { System.out.println("Deployment id is: " + res.result()); } else { System.out.println("Deployment failed!"); } });
Не сталкивался раньше с таким. Подскажите, пожалуйста, что это такое и где можно об этом почитать хорошие материалы.


Ответ

Это лямбда выражение - анонимная функция. Проще говоря, это метод без объявления (без модификаторов доступа, возвращающие значение и имя).
Появились в 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

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

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