Ответ
Ответ не найден
Ответ 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 с умом, не будь распиздяем.