6

Объясните простыми словами, что значит лямбда-выражение, (желательно, с показательным примером)? Что оно делает, другими словами. Сколько читаю, лазаю по всяким сайтам нигде не могу найти простого и понятного объяснения

Qwertiy
  • 123,725

2 Answers2

8

С определение раз всё ясно, вот пример простой: кликаем по форме, сообщаем координаты клика. Без лямбд - определяем анонимный класс, переопределяющий метод handle. С лямбдами - одна лямбда, в которой содержится "тело" метода handle:

Без лямбд:

root.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                System.out.println("Привет!" + e.getX() + ":" + e.getY());
            }
        });

С лямбдами:

root.setOnMousePressed((MouseEvent e) -> {
            System.out.println("Привет!" + e.getX() + ":" + e.getY());
        });

Или даже так:

root.setOnMousePressed((e)->{System.out.println("Привет!" + e.getX() + ":" + e.getY());});

С Runnable всё так же легко и просто:

Thread thread = new Thread(()->{System.out.println("Привет!");});
thread.start();

Или для отдачи задания в тред пул:

Runnable runnable = ()->{System.out.println("Привет!");};
DimXenon
  • 1,478
  • В NetBeans удобно сделано преобразование из/в лямбды и обратно. – DimXenon May 24 '16 at 12:54
7

Просто функция, которая неявно приводится к любому интерфейсу с единственным методом, причём имеющим ту же сигнатуру. Такой интерфейс называется функциональным.

Qwertiy
  • 123,725
  • @МиронФисенко, если всё понятно, следует принять ответ нажатием на галочку слева. – Qwertiy May 24 '16 at 12:05