Java. Для чего нужен Optional?

Sdílet
Vložit
  • čas přidán 16. 02. 2023
  • В этом видео рассказывается, когда и почему следует применять Optional при разработке на языке программирования Java.
    Поддержать канал на Boosty:
    boosty.to/arhitutorials
    Наш чатик в Telegram:
    t.me/ArhiTutorials
    #arhitutorialsjava #ityoutubersru

Komentáře • 63

  • @dematix
    @dematix Před 11 měsíci +8

    Сергей, вы единственный кто может нормально объяснить непонятные вещи в java, огромное Вам Спасибо:)

  • @e-researcher
    @e-researcher Před rokem +9

    Cool! И в сравнении с Kotlin показал, спасибо, что делишься знаниями. Знание того, что Optional расширяет систему типов ставит на место понимание вопроса.

  • @user-bn9wc8db6s
    @user-bn9wc8db6s Před rokem +11

    Сергей, огромная благодарность!!!! Как всегда всё чётко и по делу👍👍👍

  • @georg.sabantchiev
    @georg.sabantchiev Před rokem +1

    Классно объяснил 👍 Спасибо тебе!

  • @denborgor
    @denborgor Před rokem +2

    Cергей,большое спасибо за Ваши видео. Как всегда все доступно и понятно.

  • @mccokol7536
    @mccokol7536 Před rokem

    Просто лайку занёс только за тему видео🔥 смотреть буду уже с idea в руках)
    Спасибо 🤝🏽

  • @mykhailobystryi4234
    @mykhailobystryi4234 Před rokem +1

    Изначально мне казалось что я понимал для чего Optional. Что null это проблема на миллион долларов и т.д. , но я не мог понять почему Optional-у уделяют столько времени будто это что то более сложное в понимании. В общем пазл сложился, большое спасибо.

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před 10 měsíci

    Спасибо, отличный выпуск

  • @moygospodin7619
    @moygospodin7619 Před rokem +1

    хорошее объяснение, спасибо, стало понятнее!

  • @violetjellyfish2089
    @violetjellyfish2089 Před rokem

    Люблю Ваш канал, всегда очень полезные видео, информация из которых хорошо запоминается

  • @Libra7by
    @Libra7by Před rokem

    Спасибо за видео.

  • @Андрюха_айтишник

    Спасибо. Раньше не задумывался о том, что var и var с возможностью вернуть null разные типы. Ключевой вывод для меня это, что класс optional расширяет систему типов java.

  • @godzosioda
    @godzosioda Před 5 měsíci

    Спасибо за полезное видео!

  • @Levitizen
    @Levitizen Před rokem

    спасибо, все понятно и по делу

  • @xlebylllek321
    @xlebylllek321 Před rokem

    Спасибо огромное=) прям супер отлично объяснил) респект

  • @user-xc8dn1wz7t
    @user-xc8dn1wz7t Před rokem

    Спасибо

  • @user-og2ti2wd5o
    @user-og2ti2wd5o Před rokem

    спасибо!

  • @rafailmuhamedshin7650
    @rafailmuhamedshin7650 Před 9 měsíci

    Полезное видео. Теперь использую optional.

  • @user-yv5lm1qt9m
    @user-yv5lm1qt9m Před rokem

    Хорошее видео👍

  • @mark_tatyschev
    @mark_tatyschev Před rokem +1

    Optional для меня несмотря на простоту звучания на деле оказался совсем не прост. Так чтоб взять и с ходу его корректно реализовать, а не монструозить безполезные оборачивания :) Спасибо за видео, помогло приблизиться к пониманию.

  • @AlexJPep
    @AlexJPep Před 5 měsíci

    Про чтение плюсую! В этом смысле Kotlin очень огорчил... На java код ревью приятнее читается.

  • @shluhogon_42
    @shluhogon_42 Před rokem +3

    Кто-то спрашивает для чего нужен Optional? А я спрашиваю что такое Optional?

  • @user-vt4zr1ix9f
    @user-vt4zr1ix9f Před 6 měsíci

    Актуальная тема для меня. Где-то в коде закралась ошибка NullPointerException

  • @user-or9je4ln6p
    @user-or9je4ln6p Před rokem

    Тоже жил с таким замком, но мне повезло больше) Я жил на первом этаже и у меня был друг который влезал в форточку😂

  • @strash1692
    @strash1692 Před měsícem

    Спасибо за видео. Очень позновательно и полезно. Один вопрос остался, почему используете map() вместо isPresent(). Обратил внимание ещё в прошлом видео

    • @arhitutorials
      @arhitutorials  Před měsícem +1

      Наверно я в от момент думал о монадах)

  • @user-ey3kx3oi4j
    @user-ey3kx3oi4j Před rokem

    Хоть кто-то нормально объяснил... Спасибо.

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před 10 měsíci

    Делаете ли вы входные параметры типа Optional у функций ?

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Před 10 měsíci

      не стоит так делать. Лучше обработать это внутри метода, например, тернарным оператором, и установить конкретное значение, если аргумент будет null. Или вариант перегрузить метод с определенной сигнатурой, чтобы вообще не допускать null

  • @MsTim159
    @MsTim159 Před 28 dny

    Довольно долго пишу на js и на java. Так вот я не помню когда последний раз js падал в рантайме из-за того, что где-то не тот тип в переменную засунули, хотя я такие говнопроекты видал, где имена переменным давали по типу "strokaA strokaB" и т.д.

    • @arhitutorials
      @arhitutorials  Před 28 dny

      Ну значит типизация не нужна, расходимся)

    • @MsTim159
      @MsTim159 Před 28 dny

      @@arhitutorials хз куда ты расходиться собрался и зачем, я просто мнение высказал. Я не считаю, что типизация не нужна, тем более что сейчас мой стек это ts+java

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před 10 měsíci

    Правильно я понимаю, что Optional можно использовать ТОЛЬКО чтобы лаконично обработать значение используя map, filter ?
    Т.е. даже если null не предполагается

    • @arhitutorials
      @arhitutorials  Před 10 měsíci

      Не ну конечно можно использовать для чего угодно) Но я считаю, что имеет смысл использовать только там, где в качестве значения возможен null.

  • @Jilexa
    @Jilexa Před 4 měsíci

    ну т.е. просто условие было заменено на лямбда выражение и это типа лучше читается и лучше работает?

    • @arhitutorials
      @arhitutorials  Před 4 měsíci

      Простое условие можно забыть написать, а с optional это невозможно.

    • @Jilexa
      @Jilexa Před 4 měsíci

      @@arhitutorials понял, т.е. проверка при компиляции. Этот акцент я наверное упустил из видео.

    • @arhitutorials
      @arhitutorials  Před 4 měsíci

      @@Jilexa не при компиляции, а при написании кода. Из метода возвращается Optional, а значение из него еще предстоит извлечь. Если использовать для извлечения значения метод orElse(), то аварийной ситуации с отсутствием элемента не может возникнуть в принципе.

  • @userpupkin499
    @userpupkin499 Před rokem +1

    В советские времена запасной ключ на этот случай ключ просто хранился у соседей по подъезду))
    Или можно ножиком было поддеть язычок))
    А так, спасибо!

    • @arhitutorials
      @arhitutorials  Před rokem +7

      А если сосед выйдет и тоже случайно захлопнет дверь, то получится deadlock)

    • @userpupkin499
      @userpupkin499 Před rokem

      @@arhitutorials))) маловероятное событие) Тогда взлом в виде просунутого в дверь ножичка)

    • @userpupkin499
      @userpupkin499 Před rokem

      @@arhitutorialsКстати, в Котлин неявный вывод типов вымораживает. Что им, жалко явно тип написать? Сидишь, гадаешь, что за тип у переменной в итоге. Путаница возникает. Может, не привык еще.

    • @yuriytheone
      @yuriytheone Před rokem

      ​@@userpupkin499 просто kotlin переоценен... Красивее и лаконичнее C++ ещё ничего нет...

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Před 10 měsíci

      @@yuriytheone скорее недооценен, пока что

  • @BagginsFedor
    @BagginsFedor Před rokem +1

    звук не очень в этот раз что-то. могу посоветовать adobe podcast /enhance, автоматически для таких случаев ии улучшает звук

  • @caffeinejavacode1475
    @caffeinejavacode1475 Před rokem

    Spring Data

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před 10 měsíci

    А для чего нужен Optional.ofNullable(x), почему нее хватает Optional.of(x) ?
    Ведь сам тип Optional предполагает null

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Před 10 měsíci

      потому что of() вернет тебе исключение, если ты нарочно передашь ему null. ofNullable() позволяет этого избежать

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Před 10 měsíci

      ​@@ArtemArtem-dx4qlэто да, но у меня вопрос для чего так сделали в java

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Před 10 měsíci

      ​@@Das.Kleine.Krokodil потому, что of - для создания нового обьекта, а ofNullable для обертки существующей переменной с возможным null. of как фабричный метод имеет более короткое имя, в отличии от служебного ofNullable

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Před 10 měsíci

      @@ArtemArtem-dx4ql у меня вопрос в другом. Для чего так сделано в языке если изначально optional предназначен для работы с null. Почему недостаточно of

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Před 10 měsíci

      ​@@Das.Kleine.KrokodilПотому что с ofNullable бывает удобнее. Я написал для чего эти методы на самом деле нужны. Optional это просто класс, у которого есть приватный конструктор внутри и он с помощью методов of и empty устанавливает новый обьект либо с null внутри , либо с переданным значением. То есть тут всего два состояния. ofNullable реализован с помощью тернарного оператора, поэтому возвращает пустой обьект если передал ему null, либо обьект с установленным значением. Это просто удобно, когда ты ДОПУСКАЕШЬ получение null. А вот если null не нужен, то of

  • @UserUser-yk9bt
    @UserUser-yk9bt Před 6 měsíci

    Короче для того, чтобы просто напомнить прогеру, что может вернуться null ну такое... Строчек кода столько же! А использование map для сокрытия NPE за такое вообще убивать мало!!! Аж закипел! Это как раз причина когда user жмет кнопку и ничего не происходит, он орет на всех и вся, а прогер и тестер не могут понять почему!!! А это "Вася" обработал NPE через Optional😏😏😁 👿"

  • @JayDi85
    @JayDi85 Před 6 měsíci +1

    Минус поставил. Вместо того, чтобы делать везде стандартную проверку на null -- автор предлагает везде эти левые Optional вставлять. Да не просто везде, а лишь в половине случаев, создавая новый уровень абстракции. Причем код с Optional становится сложнее для всего: для написания, для чтения, для отладки. Не делайте так никогда. Чем проще код -- тем лучше для всех.

    • @arhitutorials
      @arhitutorials  Před 6 měsíci

      Это не я придумал, это стандартная фича языка. Я лишь объяснил почему и для чего она появилась.

  • @locky1827
    @locky1827 Před rokem +1

    java еще не умерла? Может что про Котлин?

  • @Onneaanable
    @Onneaanable Před rokem

    Зачем вообще Java если есть Golang и Rust. Если только старое корочить.

    • @yuriytheone
      @yuriytheone Před rokem

      Golang? 😂😂😂😂 Kotlin? 😂😂😂😂 Мальчик, иди домашку делай! А, что про python не вспомнил? 😂😂😂

  • @yuriytheone
    @yuriytheone Před rokem

    11:59 это потому, что в C++ объекты передаются через указатель или ссылку и единственный способ проверки указателя - проверка на 0 или alias NULL ... Так как архитекторы java имели только бекграунд C++ то Null так же перекочевал в java... Даже несмотря на то, что java не имеет указателей... Ну, это - инертность сознания или "язык определяет образ мышления". В любом случае лишняя проверка на Null всё лучше чем дичь с выбрасыванием исключений по поводу и без.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Před 10 měsíci

      "лишняя проверка на Null"
      Чьими силами?