С какой частой ошибкой в Java разработчики стараются не сталкиваться?

«С какой частой ошибкой в Java разработчики стараются не сталкиваться?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Разработчики стремятся избегать NullPointerException (NPE). Это ошибка времени выполнения, возникающая при попытке вызвать метод или обратиться к полю объекта, который равен null.

Пример возникновения:

String str = null;
int length = str.length(); // Выбрасывает NullPointerException

Основные способы предотвращения:

  • Использование Optional: Явно указывает на возможное отсутствие значения и требует его обработки.
    Optional<String> optionalStr = Optional.ofNullable(str);
    int length = optionalStr.map(String::length).orElse(0);
  • Предварительные проверки: Явная проверка на null перед использованием объекта.
    if (str != null) {
        int length = str.length();
    }
  • Аннотации и статический анализ: Использование аннотаций (@NonNull, @Nullable) в сочетании с инструментами (Lombok, Checker Framework) для выявления потенциальных проблем на этапе компиляции.
  • Валидация входа: Использование Objects.requireNonNull() для защиты публичных методов.
    public void process(String input) {
        Objects.requireNonNull(input, "input must not be null");
        // ...
    }

Java 14+: Для получения более информативных сообщений об ошибке можно включить флаг JVM: -XX:+ShowCodeDetailsInExceptionMessages.