И аннотации типов, и аннотации объявлений все еще существуют в Java, и они различны и не пересекаются.
Аннотация типа может быть написана при любом использовании типа. Он концептуально создает новый, более конкретный тип. То есть он описывает, какие значения представляет тип.
Например, тип int
содержит значения ..., -2, -1, 0, 1, 2, ...
Тип @Positive int
содержит значения 1, 2, ...
Следовательно, @Positive int
является подтип int
.
Аннотация объявления может быть написана для любого объявления (класса, метода или переменной). Он описывает объявляемую вещь, но не описывает значения времени выполнения. Вот примеры аннотаций объявлений:
@Deprecated
class MyClass { ... }
говорит, что программисты не должны использовать MyClass
.
@Override
void myMethod() { ... }
говорит, что myMethod
переопределяет объявление в суперклассе или интерфейсе.
@SuppressWarnings(...)
int myField = INITIALIZATION-EXPRESSION;
говорит, что компилятор не должен выдавать предупреждения о коде в выражении инициализации.
Вот примеры, которые используют как аннотацию объявления, так и аннотацию типа:
@Override
@NonNull String myMethod() { ... }
@GuardedBy("myLock")
@Regex String myField;
Обратите внимание, что аннотация типа описывает значение, а аннотация объявления что-то говорит о методе или использовании поля.
Из соображений стиля аннотации объявлений пишутся на отдельной строке, а аннотации типа пишутся непосредственно перед типом на той же строке.
person
mernst
schedule
02.05.2018