java 常见注解与元注解说明
常见标准的Annotation
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
- Override
被标记的方法为子类重写父类的方法,如果不是编译时会报错 - Deprecated
被标注的程序元素已过期,不推荐使用 - SuppressWarnings
忽略掉无法识别的警告, 如 @SuppressWarnings(“unchecked”)
元注解
java.lang.annotation 提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解):
- @Documented :表示是否将注解信息添加在JavaDoc中
- @Retention :定义该注解的生命周期
- @Target :该注解可标记的程序元素
- @Inherited :允许子类继承该注解
- @Documented :表示是否将注解信息添加在JavaDoc中。
- @Retention –:定义该注解的生命周期
- RetentionPolicy.SOURCE : 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。如:@Override, @SuppressWarnings
- RetentionPolicy.CLASS : 在类加载的时候丢弃。在字节码文件的处理中有用
- RetentionPolicy.RUNTIME : 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式
- Target : 该注解可标记的程序元素。可用的ElementType 参数包括
- ElementType.CONSTRUCTOR: 用于描述构造器
- ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
- ElementType.LOCAL_VARIABLE: 用于描述局部变量
- ElementType.METHOD: 用于描述方法
- ElementType.PACKAGE: 用于描述包
- ElementType.PARAMETER: 用于描述参数
- ElementType.TYPE: 用于描述类、接口(包括注解类型) 或enum声明
- @Inherited : 允许子类继承该注解, 父类使用使用了@Inherited 修饰的annotation,子类也将继承该annotation