Java. Для чего нужен Optional?
Vložit
- čas přidán 16. 02. 2023
- В этом видео рассказывается, когда и почему следует применять Optional при разработке на языке программирования Java.
Поддержать канал на Boosty:
boosty.to/arhitutorials
Наш чатик в Telegram:
t.me/ArhiTutorials
#arhitutorialsjava #ityoutubersru
Сергей, вы единственный кто может нормально объяснить непонятные вещи в java, огромное Вам Спасибо:)
Cool! И в сравнении с Kotlin показал, спасибо, что делишься знаниями. Знание того, что Optional расширяет систему типов ставит на место понимание вопроса.
Сергей, огромная благодарность!!!! Как всегда всё чётко и по делу👍👍👍
Классно объяснил 👍 Спасибо тебе!
Cергей,большое спасибо за Ваши видео. Как всегда все доступно и понятно.
Просто лайку занёс только за тему видео🔥 смотреть буду уже с idea в руках)
Спасибо 🤝🏽
Изначально мне казалось что я понимал для чего Optional. Что null это проблема на миллион долларов и т.д. , но я не мог понять почему Optional-у уделяют столько времени будто это что то более сложное в понимании. В общем пазл сложился, большое спасибо.
Спасибо, отличный выпуск
хорошее объяснение, спасибо, стало понятнее!
Люблю Ваш канал, всегда очень полезные видео, информация из которых хорошо запоминается
Спасибо за видео.
Спасибо. Раньше не задумывался о том, что var и var с возможностью вернуть null разные типы. Ключевой вывод для меня это, что класс optional расширяет систему типов java.
Спасибо за полезное видео!
спасибо, все понятно и по делу
Спасибо огромное=) прям супер отлично объяснил) респект
Спасибо
спасибо!
Полезное видео. Теперь использую optional.
Хорошее видео👍
Optional для меня несмотря на простоту звучания на деле оказался совсем не прост. Так чтоб взять и с ходу его корректно реализовать, а не монструозить безполезные оборачивания :) Спасибо за видео, помогло приблизиться к пониманию.
Про чтение плюсую! В этом смысле Kotlin очень огорчил... На java код ревью приятнее читается.
Кто-то спрашивает для чего нужен Optional? А я спрашиваю что такое Optional?
Актуальная тема для меня. Где-то в коде закралась ошибка NullPointerException
Тоже жил с таким замком, но мне повезло больше) Я жил на первом этаже и у меня был друг который влезал в форточку😂
Спасибо за видео. Очень позновательно и полезно. Один вопрос остался, почему используете map() вместо isPresent(). Обратил внимание ещё в прошлом видео
Наверно я в от момент думал о монадах)
Хоть кто-то нормально объяснил... Спасибо.
Делаете ли вы входные параметры типа Optional у функций ?
не стоит так делать. Лучше обработать это внутри метода, например, тернарным оператором, и установить конкретное значение, если аргумент будет null. Или вариант перегрузить метод с определенной сигнатурой, чтобы вообще не допускать null
Довольно долго пишу на js и на java. Так вот я не помню когда последний раз js падал в рантайме из-за того, что где-то не тот тип в переменную засунули, хотя я такие говнопроекты видал, где имена переменным давали по типу "strokaA strokaB" и т.д.
Ну значит типизация не нужна, расходимся)
@@arhitutorials хз куда ты расходиться собрался и зачем, я просто мнение высказал. Я не считаю, что типизация не нужна, тем более что сейчас мой стек это ts+java
Правильно я понимаю, что Optional можно использовать ТОЛЬКО чтобы лаконично обработать значение используя map, filter ?
Т.е. даже если null не предполагается
Не ну конечно можно использовать для чего угодно) Но я считаю, что имеет смысл использовать только там, где в качестве значения возможен null.
ну т.е. просто условие было заменено на лямбда выражение и это типа лучше читается и лучше работает?
Простое условие можно забыть написать, а с optional это невозможно.
@@arhitutorials понял, т.е. проверка при компиляции. Этот акцент я наверное упустил из видео.
@@Jilexa не при компиляции, а при написании кода. Из метода возвращается Optional, а значение из него еще предстоит извлечь. Если использовать для извлечения значения метод orElse(), то аварийной ситуации с отсутствием элемента не может возникнуть в принципе.
В советские времена запасной ключ на этот случай ключ просто хранился у соседей по подъезду))
Или можно ножиком было поддеть язычок))
А так, спасибо!
А если сосед выйдет и тоже случайно захлопнет дверь, то получится deadlock)
@@arhitutorials))) маловероятное событие) Тогда взлом в виде просунутого в дверь ножичка)
@@arhitutorialsКстати, в Котлин неявный вывод типов вымораживает. Что им, жалко явно тип написать? Сидишь, гадаешь, что за тип у переменной в итоге. Путаница возникает. Может, не привык еще.
@@userpupkin499 просто kotlin переоценен... Красивее и лаконичнее C++ ещё ничего нет...
@@yuriytheone скорее недооценен, пока что
звук не очень в этот раз что-то. могу посоветовать adobe podcast /enhance, автоматически для таких случаев ии улучшает звук
Spring Data
А для чего нужен Optional.ofNullable(x), почему нее хватает Optional.of(x) ?
Ведь сам тип Optional предполагает null
потому что of() вернет тебе исключение, если ты нарочно передашь ему null. ofNullable() позволяет этого избежать
@@ArtemArtem-dx4qlэто да, но у меня вопрос для чего так сделали в java
@@Das.Kleine.Krokodil потому, что of - для создания нового обьекта, а ofNullable для обертки существующей переменной с возможным null. of как фабричный метод имеет более короткое имя, в отличии от служебного ofNullable
@@ArtemArtem-dx4ql у меня вопрос в другом. Для чего так сделано в языке если изначально optional предназначен для работы с null. Почему недостаточно of
@@Das.Kleine.KrokodilПотому что с ofNullable бывает удобнее. Я написал для чего эти методы на самом деле нужны. Optional это просто класс, у которого есть приватный конструктор внутри и он с помощью методов of и empty устанавливает новый обьект либо с null внутри , либо с переданным значением. То есть тут всего два состояния. ofNullable реализован с помощью тернарного оператора, поэтому возвращает пустой обьект если передал ему null, либо обьект с установленным значением. Это просто удобно, когда ты ДОПУСКАЕШЬ получение null. А вот если null не нужен, то of
Короче для того, чтобы просто напомнить прогеру, что может вернуться null ну такое... Строчек кода столько же! А использование map для сокрытия NPE за такое вообще убивать мало!!! Аж закипел! Это как раз причина когда user жмет кнопку и ничего не происходит, он орет на всех и вся, а прогер и тестер не могут понять почему!!! А это "Вася" обработал NPE через Optional😏😏😁 👿"
Минус поставил. Вместо того, чтобы делать везде стандартную проверку на null -- автор предлагает везде эти левые Optional вставлять. Да не просто везде, а лишь в половине случаев, создавая новый уровень абстракции. Причем код с Optional становится сложнее для всего: для написания, для чтения, для отладки. Не делайте так никогда. Чем проще код -- тем лучше для всех.
Это не я придумал, это стандартная фича языка. Я лишь объяснил почему и для чего она появилась.
java еще не умерла? Может что про Котлин?
Зачем вообще Java если есть Golang и Rust. Если только старое корочить.
Golang? 😂😂😂😂 Kotlin? 😂😂😂😂 Мальчик, иди домашку делай! А, что про python не вспомнил? 😂😂😂
11:59 это потому, что в C++ объекты передаются через указатель или ссылку и единственный способ проверки указателя - проверка на 0 или alias NULL ... Так как архитекторы java имели только бекграунд C++ то Null так же перекочевал в java... Даже несмотря на то, что java не имеет указателей... Ну, это - инертность сознания или "язык определяет образ мышления". В любом случае лишняя проверка на Null всё лучше чем дичь с выбрасыванием исключений по поводу и без.
"лишняя проверка на Null"
Чьими силами?