Выпуск 13. Что такое lambda-выражения.

preview_player
Показать описание
На простом примере рассматривается использование lambda-выражений, появившихся в Java 8.
Рекомендации по теме
Комментарии
Автор

Здравстыуйте Антон.
Спасибо за прекрасные уроки, но на 08:30 Вы допустили неточность в формулировке, которая
вносит путаницу в понимание того, как выполняется лямбда-выражение.
Ранее читал Шилдта, вот что он пишет по этому поводу: ...лямбда-выражение НЕ ВЫПОЛНЯЕТСЯ САМОСТОЯТЕЛЬНО, а образует реализацию абстрактного метода, определенного в функциональном интерфейсе, где указывается его целевой тип. Когда лямбда-выражение появляется в контексте своего целевого типа, автоматически создается ЭКЗЕМПЛЯР КЛАССА, реализующего функциональный интерфейс, причем лямбда-выражение определяет поведение абстрактного метода, объявляемого в функциональном интерфейсе. А когда этот метод ВЫЗЫВАЕТСЯ через свой адресат, ВЫПОЛНЯЕТСЯ лямбда-выражение. Таким образом, лямбда-выражение позволяет преобразовать сегмент кода в ОБЪЕКТ...
Вот как то так))

krasser
Автор

Хороший, понятный пример и тема получилась, что не смог найти у других 5-6 каналах . Спасибо .

adrtalladi
Автор

Прочитал несколько объяснений в разных местах, ничего не понял. Это объяснение понял с первого раза. Благодарю!

wmdptee
Автор

А как именно Java определяет что мы имеем в виду?
import java.util.Comparator; - ничего не используется, а вдруг compareTo какой-то по другому вызовется, из другого класса например со схожим именем?

allex
Автор

Антон, здравствуйте, у меня достаточно странный вопрос, но все же я попробую. Суть в том, что у меня есть базовые знания по джаве и мне хотелось бы найти какой-нибудь сборник с задачами по программированию от нулевого уровня до высокого для того, чтобы закрепить знания

Bagasl
Автор

Антон, а вы не занимаетесь обучением Java ?

sergeyparakhin
Автор

Здравствуйте Антон, набрал код как у вас на 4 минуте 39 секунде
package edu.javacourse.lambda;

import java.io.File;
import java.io.FileFilter;

public class Starter {

public static void main(String[] args) {
File src = new File(".");
File[] files = src.listFiles(new MyFilter()); //Здесь подчеркивает new MyFilter()

for(File file: files)
{ }
}


class MyFilter implements FileFilter {
@Override
public boolean accept(File pathname)
{ return !pathname.isDirectory(); }
}

}
у вас работает, а у меня выдает ошибку

Error:(11, 38) java: non-static variable this cannot be referenced from a static context

zerogravity
Автор

Как я могу найти в коде программы какой интерфейс скрыт за лямбда выражением? как понять что используется интерфейс interface Comparator.java?

zerogravity