Java注解Anotation
1. 什么是注解
注解是jdk5.0开始引进的新技术
1.1作用是什么
-
注解的作用类似注释,但注释是给人(程序员)看的,而注解是给编译器看的。
-
注解通过标记包、类、字段、方法、局部变量、方法参数等元素据,告诉jvm这些元素据的信息
1.2 格式
以 @注解名
的格式存在,如:
1 |
2. 元注解
元注解即用来定义注解的注解,也就是在你创建注解的时候会用到,Java有4个类型的元注解:
1 |
-
@Target
表示该注解用于什么地方,可以是包、类、方法…,在枚举类ElemenetType
中 有说明:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}例如创建一个test1注解:
1
2
3
4//可以用在方法、class中
Test1{
String value() default ""; //参数,默认为空
} -
@Retention
表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中,包括:1
2
3RetentionPolicy.SOURCE //注解将被编译器丢弃
RetentionPolicy.CLASS //注解在class文件中可用,但会被VM丢弃
RetentionPolicy.RUNTIME //JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。通常自定义注解都用这个 -
@Documented
将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。 -
@Inherited
允许子类继承父类中的注解。