32. Lambda, ссылки на методы (Java Core с нуля, полный курс)
Вставка
- Опубліковано 25 лип 2024
- Ограничение на изменение переменных внутри лямбда выражений касается именно локальных переменных, поля класса изменять можно. Это ограничение сделано для избегания проблем с синхронизацией и доступом в многопоточных условиях.
Все мои курсы: javaguru.by
Разбор задач, тестов, вопросов с собеседований: t.me/javaguru_by
Поддержать канал: Сбербанк +79645291802 Андрей Б.
Ваша поддержка позволит мне снимать и бесплатно выкладывать уроки✌️
00:00 Введение
00:23 Функциональный интерфейс
05:35 Передача параметров в лямбда-выражение
05:57 LocalTime
06:13 Практика 1
08:00 Локальные переменные
10:00 Блоки кода
10:54 Обобщения
12:06 Практика 2
15:29 Лямбды как параметры методов
18:05 Практика 3
20:45 Ссылки на методы
27:35 Лямбды как результат выполнения метода
29:31 Практика 4
сегодня я закончу Java core и перейду в Enterprise, спасибо огромное за курс!
Поздравляю с окончанием core!) Спасибо за отзыв!
Большое спасибо! Очень доходчиво объясняете
Спасибо за поддержку!
you the best man
Thanks!)
Что-то сказано не так или я что-то не так понял. Но я могу здесь "с" изменить
interface MyInterface {
T getResult(T value1, T value2);
}
class Pair {
final static int q = 44;
static int a = 11;
int c = 12;
void methodLambda() {
MyInterface ref = (value1, value2) -> {
// Есть доступ ко всем элементам
System.out.println(a);
System.out.println(c);
a = 8 + value1;
c = c + value2;
return q + a + c;
};
System.out.println(ref.getResult(5, 7));
}
}
Ваш код может изменять переменную c внутри лямбда-выражения, потому что c является переменной экземпляра класса Pair, а не локальной переменной. Лямбда-выражение имеет доступ к переменным экземпляра и может их изменять.
Возможно предыдущий пример сбил с толку со статическими полями, неудачный пример привел.
В общем, в лямбда выражениях в Java рекомендуется следовать принципу "не изменять значения".