Java注解
使用注解
编译器可以使用的注解:
@Override
:让编译器检查该方法是否正确地实现了覆写@Deprecated
:告诉编译器该方法已经被标记为“作废”,引用它会提示横线 p.hello()@SuppressWarnings
:让编译器忽略某些警告
定义注解
注解的参数类似于无参方法,可以用default
设定一个默认值。最常用的参数应命名为value
元注解:可以修饰其他注解的注解
-
@Target
:定义Annotation
可以被应用于源码的哪些位置(最常用)- 类或接口:
ElementType.TYPE
- 字段:
ElementType.FIELD
- 方法:
ElementType.METHOD
- 构造方法:
ElementType.CONSTRUCTOR
- 方法参数:
ElementType.PARAMETER
@Target({ ElementType.METHOD, ElementType.FIELD }) @interface Age{ int value() default 18; }
- 类或接口:
-
@Retention
:定义Annotation
的生命周期RetentionPolicy.SOURCE
: 在编译期就被丢掉了RetentionPolicy.CLASS
: 仅保存在class文件中,它们不会被加载进JVM (默认)- **
RetentionPolicy.RUNTIME
: 会被加载进JVM,并且在运行期可以被程序读取 **
通常我们自定义的Annotation
都是RUNTIME
,所以务必要加上:
@Retention(RetentionPolicy.RUNTIME)
@Repeatable
: 定义Annotation
是否可重复(用的很少)
经过@Repeatable
修饰后,在某个类型声明处,就可以添加多个@Report
注解
@Inherited
: 定义子类是否可继承父类定义的Annotation
定义Annotation
的步骤:
- 用
@interface
定义注解
@interface Age{
}
- 添加参数、默认值
把最常用的参数定义为value()
ÿ