2015-09-09 3 views
2

Мне интересно, влияет ли аннотация на параметр с @Nonnull на поведение во время выполнения, или если оно строго используется для статического анализа.Действительно ли javax.annotation.Nonnull влияет на поведение во время выполнения?

+0

Аннотации, как правило, не влияют на поведение кода. – Holger

ответ

2

JSR-305 имеет

Статус: спящих

и вопрос о статусе на Google group остается без ответа. Поэтому для него нет «официального» приложения, это лишь некоторые инструменты (например, Findbugs), которые могут выполнять статический анализ в зависимости от него.

1

Похоже, это проверяется только во время компиляции.

Oracle От:

@NonNull - компилятор может определить случаи, когда путь код может получить нулевое значение, без необходимости отладки NullPointerException.

+1

Если я правильно прочитал это, это относится к 'org.checkerframework.checker.nullness.qual.NonNull', а не' javax.annotation.Nonnull', не так ли? –

+0

Трудно даже сказать наверняка. Документация Oracle жалок. –

+0

Правильно, этот конкретный параграф дает ** примеры ** для аннотаций типов, основанных на работе вокруг Framework Checkers. Они также имеют полный список аннотаций, которые выражают одно и то же намерение: http://types.cs.washington.edu/checker-framework/current/checker-framework-manual.html#nullness-related-work. Действительно, все они предназначены для статического анализа. BTW: В * полностью проверенной * программе не может произойти нарушение нулевых контрактов и, следовательно, во время выполнения ничего не остается проверить ... –

Смежные вопросы