Java switch null

Запомните, что выражение внутри switch в Java не может принимать значение null. Если выражение в switch будет вычислено в null, то возникнет NullPointerException. Поэтому вам нужно вставлять проверки на null до switch, если это выражение может стать null.

Вот так не надо:

Правильно вот так:

Подробнее о работе switch можно узнать в этой статье.

 

Java switch null: 2 комментария

  1. Какой ужас!
    Предлагаю поменять язык Java, чтобы там можно было проверять на null в switch.
    Java 9 уже на подходе?

    1. На самом деле тут не всё так просто. Оператор switch первоначально создавался для примитивных типов: byte, short, char, int, а затем для перечислений. Затем в Java 7 туда стало можно пихать String. Типы byte, short, char и int не могут быть null. В данном примере, который в статье, я использую Integer. В switch происходит автораспаковка в int, в процессе которой и происходит NullPointerException.
      Но даже если бы там был enum или String, то всё равно возник бы NullPointerException. Думаю, что так сделали из-за того, что перечисления в Java добавились позже, а String в операторе switch ещё позже. И когда их добавляли, switch уже не мог принимать null-ы. Но это только мои догадки, конечно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *