Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/java_fillthegaps/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Java: fill the gaps@java_fillthegaps P.291
JAVA_FILLTHEGAPS Telegram 291
Почему в java нет Elvis оператора?

Элвис оператор ?: — популярная конструкция, которая используется в Groovy, Kotlin, C# и других языках, но не в java. В этом посте мы обсудим, почему так получилось и чем java отличается от Kotlin.

Часть 1: обзор операторов

Элвис оператор ?: используется следующим образом:
String src = …
String x = src ?: "default";

▫️Если
src равен null, то x = "default"
▫️Если src НЕ равен null, то x = src

По сути это сокращённая форма тернарного оператора:
String x = src==null ? src : "default"

Есть два оператора, которые похожи на элвис:
🔸 ?. (с точкой) — null-safe member selection operator
str?.toString()
= если str не равен null, то вызвать метод toString()

🔸 ?[] — null-safe array access
lines?[6]
= если массив lines существует, то прочитать 6 элемент

Все операторы неплохо соединяются между собой:
String aMember = g?.members?[0]?.name ?: "nobody";

Но элвис оператор это только ?:

В java таких конструкций нет. Иногда это используют как аргумент того, что джава неудобная и несовременная.

На самом деле элвис оператор мог появиться уже в java 7. Пользователи java 5 называли элвис самой ожидаемой фичей. Но он не попал в итоговый релиз.

Давайте разберём, почему в java элвис оператор так и не появился, а в котлине, другом JVM языке, он есть.

Часть 2: зачем нужен null

Цель элвис оператора — облегчить работу с null. Значение null в джава коде выступает в двух ролях:

1️⃣ Ожидаемое значение и часть бизнес-логики

Поле необязательное или ещё не готово. Разработчик знает об этом заранее и учитывает в коде.

Элвис оператор прекрасно подходит для этого сценария.

2️⃣ Индикатор ошибки

Что-то пошло не так: пропущен обязательный параметр, соединение с БД оборвалось, инициализация не завершилась. Получаем NullPointerException, разбираемся с причинами и устраняем ошибку.

Здесь элвис оператор замаскирует проблему и сделает только хуже. Ошибка прикроется значением по умолчанию и пройдёт мимо нас.

Часть 3: Kotlin

Котлин использует другой подход: по умолчанию переменные НЕ могут быть null. Свойство nullability задаётся явно — через вопросик:

var str: String? = "abc"

Все null значения под чётким контролем. Поэтому элвис оператор не скрывает ошибок, а помогает писать лаконичный код. Захотели nullability — чётко это обозначили. Хотим избавиться от этого свойства — используем элвис оператор.

Часть 4: Optional

В java 8 появился способ явно указать, что значение может быть пустым — класс Optional. Метод orElse выполняет функции элвис оператора: если внутри Optional ничего нет, то возвращается значение внутри orElse.

Итог

Во времена java 5 ситуация была сложной: null мог означать и ошибку, и нормальное значение. Чтобы не провоцировать скрытые ошибки, комьюнити отклонило добавление элвис оператора.

После появления Optional нулл в коде почти всегда указывает на ошибку. Использовать элвис оператор в такой ситуации - нецелесообразно, поэтому маловероятно, что он появится в будущих версиях java.
👍5



tgoop.com/java_fillthegaps/291
Create:
Last Update:

Почему в java нет Elvis оператора?

Элвис оператор ?: — популярная конструкция, которая используется в Groovy, Kotlin, C# и других языках, но не в java. В этом посте мы обсудим, почему так получилось и чем java отличается от Kotlin.

Часть 1: обзор операторов

Элвис оператор ?: используется следующим образом:

String src = …
String x = src ?: "default";

▫️Если
src равен null, то x = "default"
▫️Если src НЕ равен null, то x = src

По сути это сокращённая форма тернарного оператора:
String x = src==null ? src : "default"

Есть два оператора, которые похожи на элвис:
🔸 ?. (с точкой) — null-safe member selection operator
str?.toString()
= если str не равен null, то вызвать метод toString()

🔸 ?[] — null-safe array access
lines?[6]
= если массив lines существует, то прочитать 6 элемент

Все операторы неплохо соединяются между собой:
String aMember = g?.members?[0]?.name ?: "nobody";

Но элвис оператор это только ?:

В java таких конструкций нет. Иногда это используют как аргумент того, что джава неудобная и несовременная.

На самом деле элвис оператор мог появиться уже в java 7. Пользователи java 5 называли элвис самой ожидаемой фичей. Но он не попал в итоговый релиз.

Давайте разберём, почему в java элвис оператор так и не появился, а в котлине, другом JVM языке, он есть.

Часть 2: зачем нужен null

Цель элвис оператора — облегчить работу с null. Значение null в джава коде выступает в двух ролях:

1️⃣ Ожидаемое значение и часть бизнес-логики

Поле необязательное или ещё не готово. Разработчик знает об этом заранее и учитывает в коде.

Элвис оператор прекрасно подходит для этого сценария.

2️⃣ Индикатор ошибки

Что-то пошло не так: пропущен обязательный параметр, соединение с БД оборвалось, инициализация не завершилась. Получаем NullPointerException, разбираемся с причинами и устраняем ошибку.

Здесь элвис оператор замаскирует проблему и сделает только хуже. Ошибка прикроется значением по умолчанию и пройдёт мимо нас.

Часть 3: Kotlin

Котлин использует другой подход: по умолчанию переменные НЕ могут быть null. Свойство nullability задаётся явно — через вопросик:

var str: String? = "abc"

Все null значения под чётким контролем. Поэтому элвис оператор не скрывает ошибок, а помогает писать лаконичный код. Захотели nullability — чётко это обозначили. Хотим избавиться от этого свойства — используем элвис оператор.

Часть 4: Optional

В java 8 появился способ явно указать, что значение может быть пустым — класс Optional. Метод orElse выполняет функции элвис оператора: если внутри Optional ничего нет, то возвращается значение внутри orElse.

Итог

Во времена java 5 ситуация была сложной: null мог означать и ошибку, и нормальное значение. Чтобы не провоцировать скрытые ошибки, комьюнити отклонило добавление элвис оператора.

После появления Optional нулл в коде почти всегда указывает на ошибку. Использовать элвис оператор в такой ситуации - нецелесообразно, поэтому маловероятно, что он появится в будущих версиях java.

BY Java: fill the gaps


Share with your friend now:
tgoop.com/java_fillthegaps/291

View MORE
Open in Telegram


Telegram News

Date: |

Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. To view your bio, click the Menu icon and select “View channel info.” Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members.
from us


Telegram Java: fill the gaps
FROM American