- 注解是那些插入到源代码中__使用其他工具__可以对其进行处理的标签
-
注解不会改变编译方式,无论是否包含注解,生成的虚拟机指令是相同的
-
注解的用途包括
(1) 自动生成。例如bean信息类
(2) 测试、日志等代码的自动生成 -
需要专门的__处理工具__处理注解,向相应的处理工具可以理解的代码中插入注解
-
注解本身不干任何事情,需要工具支持才有用
-
注解的形式:
@Test(timeout=“10000”)
括号里面的是__元素__ -
每个注解都必须通过一个__注解接口__来定义
eg.
@Target(Element.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test
{
long timeout() default 0L;
}
其中, Target和Retention是元注解
-
注解可以在__运行__时被处理的,也可以在__源码__级别进行处理
-
运行时处理的过程:
源文件 -->java编译器 --> 类文件 --> java虚拟机 --> 通过反射机制处理注解
- 注解语法
(1) 注解接口
1°
public @interface xxx {
type1 elementName1() default value1;
type2 elementName2();
}
2° 注解元素的类型
基本类型
String
Class
enum
注解类型
前面类型组成的数组
(2) 注解
1°
@xxx(elementName1=value1, elementName2=value2)
@BugReport(assigned="Harry", severity=10)
2° 元素的顺序无关紧要
3° 如果某个元素的值未指定,则使用声明的默认值
-
一个项可以有多个注解
-
注解可以用在方法、类、成员、局部变量等
-
所有的注解接口都隐式地扩展 java.lang.annotation.Annotation接口,而这个接口是一个常规接口,不是注解接口
-
标准注解
例如
@Deprecated
@Override
@Target
@Retention