Новости Java #2. В Java больше не будет NullPointerException?

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 พ.ย. 2024

ความคิดเห็น • 20

  • @chimax4713
    @chimax4713 2 หลายเดือนก่อน +3

    Спасибо. Хорошие видео. Только не забрасывай их выпуск не смотря ни на что😅

  • @БогданЗараник
    @БогданЗараник 2 หลายเดือนก่อน +1

    классная рубрика) мне нравится)

  • @ndrvsk
    @ndrvsk 2 หลายเดือนก่อน

    Выпуск топ!

  • @Selavy82
    @Selavy82 2 หลายเดือนก่อน +2

    1. Интересно, что будет в этом контексте с Optional? Ведь он явно используется для случаев, когда мы не знаем - null или не null... Здесь спасли бы Extension-method'ы, т.е. любой «String?» считался бы «Optional» и у него можно было бы сразу же вызывать соответствующие методы, но в Java их вроде не собираются завозить (Lombok не в счёт, т.к. это отдельный инструмент).
    2. И что будет, когда все более или менее попривыкнут и начнут писать null-safety-код - не будет ли рябить в глазах от восклицательных знаков? Даже в JSpecify есть возможность настроить null-restricted по-default'у, а тут как default задать - если у меня команда профессионалов и они не допускают null и постоянные «!» смотрятся тафталогией?
    3. Не забываем про var'ы и не обозначенные типы в аргументах лямбд - как будет работать вывод типов? Сможет ли он адекватно во всех случаях выводить правильный тип, понимая, где нужен «!», а где - «?»?..
    В общем, титаническая работа предстоит Б.Гёйтсу и Ko...

  • @БогданЗараник
    @БогданЗараник 2 หลายเดือนก่อน +3

    вот бы ещё всё это реально добавили в джаву, а не оставили на уровне превью/инкубатора, как string templates)

  • @alekseykouzmenko9096
    @alekseykouzmenko9096 2 หลายเดือนก่อน +8

    Слишком круто, чтобы внедрить это в ближайшие тридцать лет (

  • @antonkuranov
    @antonkuranov 2 หลายเดือนก่อน

    Хорошо, что оставили неопределенную nullability: в Котлине ее отсутствие сильно раздражает. Во многих случаях строгие описания nullability -- это зло. Фишка в том, что иногда nullability контекстно-зависимый и не вычислим в compile time. Поэтому приходится вставлять мусорные чеки даже там, где заведомо из контескта известно, что null не будет, хотя и потенциально возможен. Особенно при chained-вызовах геттеров.

  • @hackim2554
    @hackim2554 2 หลายเดือนก่อน

    Разве это не сахарный синтаксис, взятый из Kotlin? Я считаю, что Optional идеально вписывается, чем тот же `?`. Они же идентичны

    • @АлександрКотыхов-п1д
      @АлександрКотыхов-п1д 2 หลายเดือนก่อน

      Использование optional для борьбы с null это глупость вселенского масштаба.

    • @hackim2554
      @hackim2554 2 หลายเดือนก่อน

      @@АлександрКотыхов-п1д а поподробнее?)

    • @dzenthai
      @dzenthai 2 หลายเดือนก่อน

      @@АлександрКотыхов-п1д ну да, проще оставить все как есть)

  • @xzib-nt5
    @xzib-nt5 2 หลายเดือนก่อน

    Ничего не понял, в чем отличие от javax.annotation

    • @mini_jug
      @mini_jug  2 หลายเดือนก่อน

      Это нестандартные аннотации. Они не часть языка. Кроме того, аннотации гораздо длиннее, чем ! и ?

  • @bigtows
    @bigtows หลายเดือนก่อน

    Очень странная фишка, особенно когда весь код в Optional и в конвейерах. “Optional?” - выглядит смешно.

  • @vadimkh
    @vadimkh 2 หลายเดือนก่อน

    штрих

  • @EdwardNorthwind
    @EdwardNorthwind 2 หลายเดือนก่อน

    Не совсем понял зачем нужны "String?", если можно просто приравнять "String?" к "String". Зачем плодить сущности?
    Как по мне, то проще было ключ компиляции добавить -- "все объекты, поля, переменные и проч. NOTNULL", чтобы не пришлось везде сидеть и вхерачивать этот "!"

    • @mini_jug
      @mini_jug  2 หลายเดือนก่อน

      Если всё автоматом станет String?, то у тебя весь проект станет красным из-за кучи варнингов. Ключ будет. Про это вскользь упомянуто в JEP'е.

    • @EdwardNorthwind
      @EdwardNorthwind 2 หลายเดือนก่อน

      ​@@mini_jug Я тут подумал, что логичнее было бы сделать так. Без ключа всё по старому, а добавив ключ компиляции применяется логика "String" == "String!", а нужно позволить null, то ставь "?". Короче как в Котлине.
      Так как ключ не обязателен, то обратная совместимость не нарушается. А с ключом тебе естественно придется перелопатить проект, чтобы привести проект в порядок.

    • @elton-j5m
      @elton-j5m 2 หลายเดือนก่อน

      @@EdwardNorthwind Так сделали в C#, когда вводили Nullability. Но это ещё хуже! Ты смотришь на чужой код какой-нибудь старой сторонней либы, там написано String и ты не понимаешь, старый это код или новый и может ли там быть null или нет и с какими ключами его нужно компилировать.
      Если раньше ты знал, что доверять никакому типу нельзя в плане нуллов, то теперь написано, что как бы доверять этому типу можно, но на самом деле всё так же нельзя.
      В итоге всё равно нужно всё проверять на null - это полный бардак, бессмысленная фича, стало только хуже.

    • @EdwardNorthwind
      @EdwardNorthwind 2 หลายเดือนก่อน

      @@elton-j5m для этого, вообще-то, существует документация.