Ответ
В Java при написании тестов или продакшн-кода, который обрабатывает потенциально null-значения, я активно использую Optional. Проверка наличия значения делается так:
-
isPresent()/isEmpty()(Java 11+): Классическая проверка.Optional<String> userInput = getUserInput(); if (userInput.isPresent()) { // Значение есть, можно безопасно работать String value = userInput.get(); System.out.println("Input: " + value); } if (userInput.isEmpty()) { // Значение отсутствует System.out.println("No input provided."); }
Однако, прямое использование isPresent() + get() считается антипаттерном. Вместо этого я предпочитаю функциональные подходы, которые безопаснее и выразительнее:
ifPresent(): Выполнить действие, если значение есть.userInput.ifPresent(v -> System.out.println("Input: " + v));orElse()/orElseGet(): Получить значение или значение по умолчанию.String safeValue = userInput.orElse("default_value"); String lazyValue = userInput.orElseGet(() -> computeDefault()); // Ленивое вычислениеorElseThrow(): Выбросить исключение, если значения нет. Часто используется в сервисном слое.String mandatoryValue = userInput.orElseThrow(() -> new IllegalArgumentException("User input is mandatory for this operation") );
Такой стиль позволяет избежать проверок на null и делает поток выполнения более декларативным.