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

КОМЕНТАРІ • 8

  • @user-asas0
    @user-asas0 6 місяців тому +1

    сегодня я закончу Java core и перейду в Enterprise, спасибо огромное за курс!

    • @java-guru
      @java-guru  6 місяців тому +2

      Поздравляю с окончанием core!) Спасибо за отзыв!

  • @MAKKiiiiiiiiii
    @MAKKiiiiiiiiii Рік тому +1

    Большое спасибо! Очень доходчиво объясняете

    • @java-guru
      @java-guru  Рік тому

      Спасибо за поддержку!

  • @user-nq3ew2le5y
    @user-nq3ew2le5y Рік тому

    you the best man

  • @user-et7vb4ju6v
    @user-et7vb4ju6v Рік тому +1

    Что-то сказано не так или я что-то не так понял. Но я могу здесь "с" изменить
    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));
    }
    }

    • @java-guru
      @java-guru  11 місяців тому +1

      Ваш код может изменять переменную c внутри лямбда-выражения, потому что c является переменной экземпляра класса Pair, а не локальной переменной. Лямбда-выражение имеет доступ к переменным экземпляра и может их изменять.
      Возможно предыдущий пример сбил с толку со статическими полями, неудачный пример привел.
      В общем, в лямбда выражениях в Java рекомендуется следовать принципу "не изменять значения".