引入版本 : Java SE5
注解(也成为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们在稍后某个时刻非常方便的使用这些数据。
三个java.lang自带的标准注解
@override
: 表示当前方法的定义将覆盖父类中的方法。如果方法签名对不上被覆盖的方法,编译器会报错。
@Deprecated
: 表示该元素已经过时,如果使用了该元素,编译器会发出一个warning。
@SuppressWarnings
:关闭不当的编译器警告信息。
定义注解
@Target(ElementType.METHOD)//作用对象
@Retention(RetentionPolicy.SOURCE) //定义保存元数据的级别
public @interface test{
public int id();
public String description() default "no description";
}
使用注解
@test(id = 1)
public boolean testMethod(){
}
四种元注解,负责注解其他的注解
@Target
表示注解用在什么地方,可使用枚举类ElementType
中的元素
- CONSTRUCTOR (构造方法)
- FIELD (类中的域 包括 enum)
- LOCAL_VARIABLE (局部变量)
- METHOD (方法)
- PACKAGE (包)
- PARAMETER (参数)
- TYEP (类,接口, enum声明)
也可以使用该注解表示应用在所有的范围
@Retention
表示在什么级别保存注解的信息,可使用枚举类RetentionType
中的元素
- SOURCE(注解将被编译器丢弃)
- CLASS (注解在class文件中可用,会被jvm丢弃)
- RUNTIME (在运行期间保留该注解,可以通过反射机制获取注解的信息)
@Documented
表示该注解包含在javadoc中
@Inherited
表示该注解可以被继承
注解处理器
通过反射机制实现一个注解处理器,将注解中的信息应用到对应的范围中
注解元素
注解元素可以使用的类型包括:
- 所有的基本类型
- String
- Class
- enum
- Annotation
否则会报错
注:基本类型不允许使用包装类
网友评论