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

  Рет қаралды 12,357

Sergey Arkhipov Java Tutorials

Sergey Arkhipov Java Tutorials

Жыл бұрын

В этом видео рассказывается, когда и почему следует применять Optional при разработке на языке программирования Java.
Поддержать канал на Boosty:
boosty.to/arhitutorials
Наш чатик в Telegram:
t.me/ArhiTutorials
#arhitutorialsjava #ityoutubersru

Пікірлер: 63
@dematix
@dematix 10 ай бұрын
Сергей, вы единственный кто может нормально объяснить непонятные вещи в java, огромное Вам Спасибо:)
@e-researcher
@e-researcher Жыл бұрын
Cool! И в сравнении с Kotlin показал, спасибо, что делишься знаниями. Знание того, что Optional расширяет систему типов ставит на место понимание вопроса.
@user-bn9wc8db6s
@user-bn9wc8db6s Жыл бұрын
Сергей, огромная благодарность!!!! Как всегда всё чётко и по делу👍👍👍
@denborgor
@denborgor Жыл бұрын
Cергей,большое спасибо за Ваши видео. Как всегда все доступно и понятно.
@georg.sabantchiev
@georg.sabantchiev Жыл бұрын
Классно объяснил 👍 Спасибо тебе!
@moygospodin7619
@moygospodin7619 Жыл бұрын
хорошее объяснение, спасибо, стало понятнее!
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 10 ай бұрын
Спасибо, отличный выпуск
@mccokol7536
@mccokol7536 Жыл бұрын
Просто лайку занёс только за тему видео🔥 смотреть буду уже с idea в руках) Спасибо 🤝🏽
@Libra7by
@Libra7by Жыл бұрын
Спасибо за видео.
@violetjellyfish2089
@violetjellyfish2089 Жыл бұрын
Люблю Ваш канал, всегда очень полезные видео, информация из которых хорошо запоминается
@godzosioda
@godzosioda 4 ай бұрын
Спасибо за полезное видео!
@xlebylllek321
@xlebylllek321 11 ай бұрын
Спасибо огромное=) прям супер отлично объяснил) респект
@Levitizen
@Levitizen Жыл бұрын
спасибо, все понятно и по делу
@user-xc8dn1wz7t
@user-xc8dn1wz7t Жыл бұрын
Спасибо
@user-og2ti2wd5o
@user-og2ti2wd5o 11 ай бұрын
спасибо!
@mykhailobystryi4234
@mykhailobystryi4234 Жыл бұрын
Изначально мне казалось что я понимал для чего Optional. Что null это проблема на миллион долларов и т.д. , но я не мог понять почему Optional-у уделяют столько времени будто это что то более сложное в понимании. В общем пазл сложился, большое спасибо.
@Андрюха_айтишник
@Андрюха_айтишник Жыл бұрын
Спасибо. Раньше не задумывался о том, что var и var с возможностью вернуть null разные типы. Ключевой вывод для меня это, что класс optional расширяет систему типов java.
@rafailmuhamedshin7650
@rafailmuhamedshin7650 8 ай бұрын
Полезное видео. Теперь использую optional.
@user-yv5lm1qt9m
@user-yv5lm1qt9m Жыл бұрын
Хорошее видео👍
@mark_tatyschev
@mark_tatyschev Жыл бұрын
Optional для меня несмотря на простоту звучания на деле оказался совсем не прост. Так чтоб взять и с ходу его корректно реализовать, а не монструозить безполезные оборачивания :) Спасибо за видео, помогло приблизиться к пониманию.
@AlexJPep
@AlexJPep 4 ай бұрын
Про чтение плюсую! В этом смысле Kotlin очень огорчил... На java код ревью приятнее читается.
@user-vt4zr1ix9f
@user-vt4zr1ix9f 5 ай бұрын
Актуальная тема для меня. Где-то в коде закралась ошибка NullPointerException
@user-or9je4ln6p
@user-or9je4ln6p Жыл бұрын
Тоже жил с таким замком, но мне повезло больше) Я жил на первом этаже и у меня был друг который влезал в форточку😂
@strash1692
@strash1692 14 күн бұрын
Спасибо за видео. Очень позновательно и полезно. Один вопрос остался, почему используете map() вместо isPresent(). Обратил внимание ещё в прошлом видео
@arhitutorials
@arhitutorials 14 күн бұрын
Наверно я в от момент думал о монадах)
@user-ey3kx3oi4j
@user-ey3kx3oi4j Жыл бұрын
Хоть кто-то нормально объяснил... Спасибо.
@shluhogon_42
@shluhogon_42 Жыл бұрын
Кто-то спрашивает для чего нужен Optional? А я спрашиваю что такое Optional?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 10 ай бұрын
Делаете ли вы входные параметры типа Optional у функций ?
@ArtemArtem-dx4ql
@ArtemArtem-dx4ql 9 ай бұрын
не стоит так делать. Лучше обработать это внутри метода, например, тернарным оператором, и установить конкретное значение, если аргумент будет null. Или вариант перегрузить метод с определенной сигнатурой, чтобы вообще не допускать null
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 10 ай бұрын
Правильно я понимаю, что Optional можно использовать ТОЛЬКО чтобы лаконично обработать значение используя map, filter ? Т.е. даже если null не предполагается
@arhitutorials
@arhitutorials 10 ай бұрын
Не ну конечно можно использовать для чего угодно) Но я считаю, что имеет смысл использовать только там, где в качестве значения возможен null.
@MsTim159
@MsTim159 4 күн бұрын
Довольно долго пишу на js и на java. Так вот я не помню когда последний раз js падал в рантайме из-за того, что где-то не тот тип в переменную засунули, хотя я такие говнопроекты видал, где имена переменным давали по типу "strokaA strokaB" и т.д.
@arhitutorials
@arhitutorials 4 күн бұрын
Ну значит типизация не нужна, расходимся)
@MsTim159
@MsTim159 4 күн бұрын
@@arhitutorials хз куда ты расходиться собрался и зачем, я просто мнение высказал. Я не считаю, что типизация не нужна, тем более что сейчас мой стек это ts+java
@caffeinejavacode1475
@caffeinejavacode1475 Жыл бұрын
Spring Data
@BagginsFedor
@BagginsFedor Жыл бұрын
звук не очень в этот раз что-то. могу посоветовать adobe podcast /enhance, автоматически для таких случаев ии улучшает звук
@Jilexa
@Jilexa 3 ай бұрын
ну т.е. просто условие было заменено на лямбда выражение и это типа лучше читается и лучше работает?
@arhitutorials
@arhitutorials 3 ай бұрын
Простое условие можно забыть написать, а с optional это невозможно.
@Jilexa
@Jilexa 3 ай бұрын
@@arhitutorials понял, т.е. проверка при компиляции. Этот акцент я наверное упустил из видео.
@arhitutorials
@arhitutorials 3 ай бұрын
@@Jilexa не при компиляции, а при написании кода. Из метода возвращается Optional, а значение из него еще предстоит извлечь. Если использовать для извлечения значения метод orElse(), то аварийной ситуации с отсутствием элемента не может возникнуть в принципе.
@userpupkin499
@userpupkin499 Жыл бұрын
В советские времена запасной ключ на этот случай ключ просто хранился у соседей по подъезду)) Или можно ножиком было поддеть язычок)) А так, спасибо!
@arhitutorials
@arhitutorials Жыл бұрын
А если сосед выйдет и тоже случайно захлопнет дверь, то получится deadlock)
@userpupkin499
@userpupkin499 Жыл бұрын
@@arhitutorials))) маловероятное событие) Тогда взлом в виде просунутого в дверь ножичка)
@userpupkin499
@userpupkin499 Жыл бұрын
@@arhitutorialsКстати, в Котлин неявный вывод типов вымораживает. Что им, жалко явно тип написать? Сидишь, гадаешь, что за тип у переменной в итоге. Путаница возникает. Может, не привык еще.
@yuriytheone
@yuriytheone Жыл бұрын
​@@userpupkin499 просто kotlin переоценен... Красивее и лаконичнее C++ ещё ничего нет...
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 10 ай бұрын
@@yuriytheone скорее недооценен, пока что
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 10 ай бұрын
А для чего нужен Optional.ofNullable(x), почему нее хватает Optional.of(x) ? Ведь сам тип Optional предполагает null
@ArtemArtem-dx4ql
@ArtemArtem-dx4ql 9 ай бұрын
потому что of() вернет тебе исключение, если ты нарочно передашь ему null. ofNullable() позволяет этого избежать
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 9 ай бұрын
​@@ArtemArtem-dx4qlэто да, но у меня вопрос для чего так сделали в java
@ArtemArtem-dx4ql
@ArtemArtem-dx4ql 9 ай бұрын
​@@Das.Kleine.Krokodil потому, что of - для создания нового обьекта, а ofNullable для обертки существующей переменной с возможным null. of как фабричный метод имеет более короткое имя, в отличии от служебного ofNullable
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 9 ай бұрын
@@ArtemArtem-dx4ql у меня вопрос в другом. Для чего так сделано в языке если изначально optional предназначен для работы с null. Почему недостаточно of
@ArtemArtem-dx4ql
@ArtemArtem-dx4ql 9 ай бұрын
​@@Das.Kleine.KrokodilПотому что с ofNullable бывает удобнее. Я написал для чего эти методы на самом деле нужны. Optional это просто класс, у которого есть приватный конструктор внутри и он с помощью методов of и empty устанавливает новый обьект либо с null внутри , либо с переданным значением. То есть тут всего два состояния. ofNullable реализован с помощью тернарного оператора, поэтому возвращает пустой обьект если передал ему null, либо обьект с установленным значением. Это просто удобно, когда ты ДОПУСКАЕШЬ получение null. А вот если null не нужен, то of
@UserUser-yk9bt
@UserUser-yk9bt 5 ай бұрын
Короче для того, чтобы просто напомнить прогеру, что может вернуться null ну такое... Строчек кода столько же! А использование map для сокрытия NPE за такое вообще убивать мало!!! Аж закипел! Это как раз причина когда user жмет кнопку и ничего не происходит, он орет на всех и вся, а прогер и тестер не могут понять почему!!! А это "Вася" обработал NPE через Optional😏😏😁 👿"
@JayDi85
@JayDi85 5 ай бұрын
Минус поставил. Вместо того, чтобы делать везде стандартную проверку на null -- автор предлагает везде эти левые Optional вставлять. Да не просто везде, а лишь в половине случаев, создавая новый уровень абстракции. Причем код с Optional становится сложнее для всего: для написания, для чтения, для отладки. Не делайте так никогда. Чем проще код -- тем лучше для всех.
@arhitutorials
@arhitutorials 5 ай бұрын
Это не я придумал, это стандартная фича языка. Я лишь объяснил почему и для чего она появилась.
@locky1827
@locky1827 Жыл бұрын
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 10 ай бұрын
"лишняя проверка на Null" Чьими силами?
Java. Enum на примерах.
18:34
Sergey Arkhipov Java Tutorials
Рет қаралды 9 М.
Java. Класс Object. Разбор вопросов на собеседование.
21:16
Sergey Arkhipov Java Tutorials
Рет қаралды 30 М.
I CAN’T BELIEVE I LOST 😱
00:46
Topper Guild
Рет қаралды 93 МЛН
Optionals In Java - Simple Tutorial
15:53
Coding with John
Рет қаралды 200 М.
Java. Стирание типов.
14:07
Sergey Arkhipov Java Tutorials
Рет қаралды 15 М.
Hidden Beauties of Java Enums
22:20
Frank Delporte
Рет қаралды 12 М.
Java. Разбираемся с монадами.
20:20
Sergey Arkhipov Java Tutorials
Рет қаралды 10 М.
Дженерики в Java. Проще чем кажется.
21:36
Игорь Мешалкин
Рет қаралды 14 М.
Java. Лямбда-выражения.
23:47
Sergey Arkhipov Java Tutorials
Рет қаралды 32 М.
Docker за 20 минут
21:42
suchkov tech
Рет қаралды 65 М.
Java Streams Tutorial | 2020
19:13
Amigoscode
Рет қаралды 256 М.
Java. Проблема с null. Null safety.
11:59
Sergey Arkhipov Java Tutorials
Рет қаралды 10 М.