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

Поділитися
Вставка
  • Опубліковано 23 гру 2024

КОМЕНТАРІ • 67

  • @dematix
    @dematix Рік тому +11

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

  • @e-researcher
    @e-researcher Рік тому +10

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

  • @МаксМакс-ч8к
    @МаксМакс-ч8к Рік тому +12

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

  • @MrSanzhar73
    @MrSanzhar73 15 годин тому

    Good explanation!

  • @denborgor
    @denborgor Рік тому +2

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

  • @godzosioda
    @godzosioda 10 місяців тому

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

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

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

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

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

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

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

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

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

  • @rafailmuhamedshin7650
    @rafailmuhamedshin7650 Рік тому

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

  • @xlebylllek321
    @xlebylllek321 Рік тому

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

  • @georg.sabantchiev
    @georg.sabantchiev Рік тому +1

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

  • @Libra7by
    @Libra7by Рік тому

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

  • @violetjellyfish2089
    @violetjellyfish2089 Рік тому

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

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

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

  • @ВасильМихальчук-ж7т

    спасибо!

  • @AlexJPep
    @AlexJPep 10 місяців тому

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

  • @strash1692
    @strash1692 6 місяців тому

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

    • @arhitutorials
      @arhitutorials  6 місяців тому +1

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

  • @mccokol7536
    @mccokol7536 Рік тому

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

  • @Levitizen
    @Levitizen Рік тому

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

  • @ВасилийЮдин-п8ы

    Спасибо

  • @shluhogon_42
    @shluhogon_42 Рік тому +4

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

  • @Ната-ц5р7с
    @Ната-ц5р7с Рік тому

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

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

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

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Рік тому

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

  • @АндрейАлександрович-с2ш

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

  • @alexandrkomar4741
    @alexandrkomar4741 Місяць тому

    Здравсвуйте. Не находит ваш тг канал. Вы его удалили?

    • @arhitutorials
      @arhitutorials  Місяць тому

      @@alexandrkomar4741 это не канал, а группа для общения. Сделал ее закрытой чтоб остановить нашествие ботов.
      Зайти можно по ссылке:
      t.me/+TH9AoBq_ct6RYZgz

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

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

    • @arhitutorials
      @arhitutorials  Рік тому

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

  • @Jilexa
    @Jilexa 9 місяців тому

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

    • @arhitutorials
      @arhitutorials  9 місяців тому

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

    • @Jilexa
      @Jilexa 9 місяців тому

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

    • @arhitutorials
      @arhitutorials  9 місяців тому

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

  • @ОлегизАшхабада
    @ОлегизАшхабада 11 місяців тому

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

  • @ЕвгенийОмельченко-ы6щ

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

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

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

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Рік тому

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

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

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Рік тому

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

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

    • @ArtemArtem-dx4ql
      @ArtemArtem-dx4ql Рік тому

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

  • @MsTim159
    @MsTim159 5 місяців тому

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

    • @arhitutorials
      @arhitutorials  5 місяців тому

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

    • @MsTim159
      @MsTim159 5 місяців тому

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

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

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

    • @arhitutorials
      @arhitutorials  Рік тому +7

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

    • @userpupkin499
      @userpupkin499 Рік тому

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

    • @userpupkin499
      @userpupkin499 Рік тому

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

    • @yuriytheone
      @yuriytheone Рік тому

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

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

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

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

  • @caffeinejavacode1475
    @caffeinejavacode1475 Рік тому

    Spring Data

  • @JayDi85
    @JayDi85 10 місяців тому +1

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

    • @arhitutorials
      @arhitutorials  10 місяців тому +1

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

  • @UserUser-yk9bt
    @UserUser-yk9bt 11 місяців тому

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

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

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

  • @Onneaanable
    @Onneaanable Рік тому

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

    • @yuriytheone
      @yuriytheone Рік тому

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

  • @yuriytheone
    @yuriytheone Рік тому

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

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