Java注解实现原理及自定义注解

1、注解

注解英文称 Annotaion,是Java从1.5开始支持加入源码的特殊语法元数据,作为程序的元数据嵌入到程序当中。注解实现有一个重要的接口Annotation接口,利用@interface关键字,将所有使用该关键字的注解类都实现Annotation接口。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。

使用注解的好处:1、帮助代码编译检查,2、提高代码的识别度,比如 @override @Deprecated , 3、减少重复代码,简化代码、4、根据注解生成帮助文档,如 @Decument 等

2、元注解

注解的基本语法:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AnnotationName{

}
元注解就是注解的注解,用来描述注解的。
(1)@Retention 定义该注解的生命周期
RetentionPolicy.SOURCE :作用于源码阶段,比如常见的 @Override, @SuppressWarnings;
RetentionPolicy.CLASS :作用于字节码阶段
RetentionPolicy.RUNTIME :作用于运行阶段
(2)@Target 定义该注解的作用范围
ElementType.TYPE :用于注解到类,接口、枚举类
    ElementType.FIELD:字段,包括枚举类常量
    ElementType.METHOD:方法声明
    ElementType.PARAMETER:参数声明
    ElementType.CONSTRUCTOR:构造器声明
    ElementType.LOCAL_VARIABLE :局部变量声明
    ElementType.ANNOTATION_TYPE :用于注解声明,即注解的注解,元注解
    ElementType.PACKAGE :包声明
(3)
@Document 注解将生成到javadoc中
    @Deprecated  表示过时的类
@Inherited 是否允许子类继承该注解
@SuppressWarnings 编译器忽略掉无法识别的警告名
@Override 标注的方法重载了父类的方法

3、自定义注解

/**
 * 自定义注解
 *
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

	String [] value() default "";
	
}
注意:规定注解里面只能使用java八大基本数据类型和String、enum、Annotation、class。









你可能感兴趣的:(Java)