Изучаю данный туториал. На некоторых скриншотах есть конструкция ->, например:
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
Комментариев нет:
Отправить комментарий