Работали ли вы только с Backend?

Ответ

Ответ не найден

Ответ 18+ 🔞

Смотри, вот тебе реальная история из жизни, которая объясняет, почему null в Java — это такая боль в жопе, а не фича. Представь себе, ты заходишь в свой гараж, где у тебя стоит твоя ласточка, и хочешь её завести. Ты уверен, что ключи на месте, бензин залит, аккумулятор не сел. Суёшь руку в бардачок, а там... пусто. Ни хуя. Вообще нихуя. Вот это и есть NullPointerException.

Ты же не ожидаешь, что в бардачке, который по документации должен содержать CarKeys, окажется вакуум? А система тебе спокойно так: "Да, бардачок существует, но в нём null". И ты стоишь, ебёшь мозг, потому что логика твоя вроде правильная — "взять ключи из бардачка, вставить в замок, повернуть". А на деле получается "взять нихуя, попытаться вставить нихуя в замок, получить ебучую ошибку и пойти пешком".

Car myCar = new Car();
CarKeys keys = myCar.getGlovebox().getKeys(); // getGlovebox() вернул null. Всё, пиздец.
keys.turnInIgnition(); // БАБАХ! NullPointerException. Иди ищи, где у тебя этот хуёвый бардачок прохудился.

Вот именно поэтому все эти умные дядьки и придумали Optional<T>. Это как если бы ты, прежде чем лезть в бардачок, спросил систему: "Слушай, а там вообще ключи-то есть? Или я сейчас на пустое место время потрачу?".

Optional<CarKeys> maybeKeys = myCar.getGlovebox().getKeysSafely();
if (maybeKeys.isPresent()) {
    CarKeys keys = maybeKeys.get(); // А вот тут уже можно быть уверенным — ключи в руках!
    keys.turnInIgnition();
} else {
    System.out.println("Ну бля, ключей нет. Вызывай такси или ищи запасные.");
}

Суть в том, что Optional — это не магическая коробочка, которая решает все проблемы. Это, блядь, явный договор с тем, кто будет читать твой код (или с тобой же через месяц). Он кричит: "Эй, дружок-пирожок, значение тут может и отсутствовать, не забудь проверить, прежде чем использовать!". Это лучше, чем молчаливый пиздец в рантайме.

Конечно, можно и забить хуй, и делать optional.get() без проверки. Но это как ехать на машине, не глядя в бензобак, когда стрелка уже неделю на нуле. Далеко не уедешь, только потом будешь ногами топать с канистрой, материться на всё подряд и винить кого угодно, кроме себя. Так что используй Optional с умом, не будь распиздяем.