2016-10-21 13 views
0

Я недавно решил начать использовать аннотации нулевой контрольной суммы (@NotNull), я использую Intellij Idea's annotations library, чтобы получить доступ к этим. Я пытаюсь выяснить, будут ли эти аннотации работать во время выполнения, чтобы проверить, являются ли значения нулевыми, и если да, то как они справляются с этими ошибками (например, он бросает NullPointerException, просто возвращает значение по умолчанию (например, null, 0 , ложный)). Кроме того, если эти аннотации не работают, существует ли другой набор, который может быть более стандартизованным аннотациями, которые будут работать во время выполнения (например, javax)? Если они не работают, я должен прекратить их использовать и вернуться к стандартной контрольной сумме null (if(x == null)) или использовать как аннотации, так и стандартные контрольные суммы null? И пока я здесь, это аннотации, такие как @Nullable хорошая идея?Выполняет ли @NotNull во время выполнения

+1

Основная цель нулевых аннотаций - помочь компилятору или аналогичному инструменту статически определять проблемы, связанные с нулем во время компиляции. В идеале, нулевая аннотированная программа, прошедшая статический анализ, никогда не сможет повысить NPE во время выполнения. Сгенерированные проверки времени выполнения - это просто дополнительная защитная сетка, а не основная цель нулевых аннотаций. OTOH, если вы замените нулевые проверки нуля с помощью аннотации, статический анализ неизбежно сигнализирует о проблеме. –

ответ

1

Да, он проверяет во время работы и бросает IllegalArgumentException, когда null. Вы можете отключить/включить это в настройках компилятора.