Annotation :
package java.lang.annotation.*;Аннотации представляют из себя дескрипторы, включаемые в текст программы, и используются для хранения метаданных программного кода, необходимых на разных этапах жизненного цикла программы.
Retention :
- @Retention(RetentionPolicy.SOURCE) - содержаться только в исходном файле и отбрасываются при компиляции.
- @Retention(RetentionPolicy.CLASS) - сохраняются в файле, однако они недоступны JVM во время выполнения.
- @Retention(RetentionPolicy.RUNTIME) - сохраняются в файле во время компиляции и остаются доступными JVM во время выполнения.
Target :
- @Target(ElementType.PACKAGE) - только для пакетов;
- @Target(ElementType.TYPE) - только для классов;
- @Target(ElementType.CONSTRUCTOR) - только для конструкторов;
- @Target(ElementType.METHOD) - только для методов;
- @Target(ElementType.FIELD) - только для атрибутов(переменных) класса;
- @Target(ElementType.PARAMATER) - только для параметров метода;
- @Target(ElementType.LOCAL_VARIABLE) - только для локальных переменных.
Как создать свою Аннотацию? :
@Target({TYPE, FIELD, METHOD, PARAMETER})
@Retention(RetentionPolicy.SOURCE)
public @interface MyAnnotation {
String[] value();
}
Полезные ссылки:
- Package java.lang.annotation Java Docs (Java 8)
- Аннотация методов, annotation java-online.ru