Java注解其实是代码里的特殊标记,使用其他工具可以对其进行处理。注解是一种元数据,起到了描述、配置的作用,生成文档,所有的注解都隐式地扩展自java.lang.annotation.Annotation。注解可能使用注解来自动生成附属文件,如部署描述符和Bean信息类,还可以用于自动生成测试、日志、事务语义等代码。可以注解方法、类、成员、局部变量等。
注解语法
注解是由注解接口来定义的,注解的定义很像接口的定义,与其他Java接口一样,注解也将会编译成class文件.在注解中,一般都会包含一些元素以表示某些值,注解的元素看起来就像接口中的方法,可以为注解元素指定一些值。
modifiers @interface AnnotationName
{
elementDeclaration1;
elementDeclaration2;
}
举例来说
public @interface Message
{
String sendTo() default "[none]";
int level()=0;
}
每个注解都有下面的格式
@AnnotationName(elementName1=value1,elementName2=value2)
举例来说
@Message(sendTo="Jack",level=5)
注解元素的类型
- 基本类型
- String
- Class
- enum类型
- 注解类型
- 以上类型的数组
注解分类
根据注解参数的个数可以分为:
- 标记注解
没有元素的注解成为标记注解 - 单值注解
- 完整注解
根据注解使用用途和方法可以分为:
- 内置系统注解
- 元注解
- 自定义注解
注解举例
java.lang、java.lang.annotation和javax.annotation包中定义了很多的注解接口,其中四种是元注解,还有三种标准注解,其中有用于编译的注解
名称 | 说明 |
---|---|
@Override | 检查是否覆盖了来自超类的方法 |
@Deprecated | 抑制过时的项的警告 |
@SuppressWarning | 抑制编译器某种特殊类型的警告 |
@Generated | 目的是代码生成工具使用 |
有用于资源管理的注解
名称 | 说明 |
---|---|
@PostConstrut和@PreDestory | 用于控制对象生命周期的环境中,标记了这些注解的方法应该在对象被构建之后,或者在对象移除之前调用 |
@Resource | 用于资源注入 |
元注解是用于注解其他注解的注解
名称 | 说明 |
---|---|
@Retention | 定义了该Annotation被保留的时间长短 |
@Target | 说明了Annotation所修饰的范围、可用于package、type、类型成员、方法参数和本地变量 |
@Documented | 用于描述其他类型的annotation应该作为被标注的程序成员的公共API,可以被javadoc此类的工具文档化 |
@Inherited | 阐述了某个被标注的类型是被继承的 |