有关于注解

  JDK1.5 之后的系统中,内建了3个注解(Annotation)

  1、@Override:表示覆写操作,这个注解在子类重写父类的方法的时候可以用到,也就是重写。在我现阶段的开发中这个注解是用的次数最多的;

  2、@Deprecated:注解表示不建议使用的操作。这个注解写上去以后,是为了告诉调用这个方法的人,最好不好调用这个方法了,因为这个方法已经过时了,以后可能要把这个方法去掉;

  3、@SuppressWarnings:表示压制警告。在平时开发的过程中,我们经常会在代码中出现一些黄色线条标志的代码,而那些代码就是警告,我的项目经理和我说,作为一个合格的程序员,在代码中最好是不要出现黄线,这个注解就是告诉编译器,这块警告我知道了,不要显示出来了。

  但是在我们日常的工作中,很大一部分注解都是自定义的,包括很多框架中使用到的注解。

package AnnotationDemo;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value={ElementType.METHOD,ElementType.TYPE})
@Retention(value=RetentionPolicy.RUNTIME)
public @interface AnnotationTestDemo02 {
    public String username() default "QQ";
}

  上面这行代码中,@interface自定义注解。自定义注解默认是继承自java.lang.annotation.Annotation。其中上面@Target、@Retention是元注解,也就是java本身提供的专门用于注解自定义注解的注解。

  @Target注解:表明了该注解的使用对象,主要包括以下几种:

    1、只能在Annotation中出现:public static final ElementType ANNOTATION_TYPE;

    2、只能在构造方法中出现:public static final ElementType CONSTRUCTOR;

    3、本地变量上使用:public static final ElementType LOCAL_VARIABLE;

    4、只能在方法上使用:public static final ElementType METHOD;

    5、在参数声明上使用:public static final ElementType PARAMETER;

    6、在包的声明上使用:public static final ElementType PACKAGE;

    7、只能在类或接口上使用:public static final ElementType TYPE;

  @Retention:表示注解存在的范围,会有以下几种情况

    1、public static final RetentionPolicy SOURCE :只在源码中起作用,最典型的注解就是@Override,这个覆写注解仅仅存在于源码中,为编译器使用。

    2、public static final RetentionPolicy CLASS:只在编译之后的class中起作用。

    3、public static final RetentionPolicy RUNTIME:在运行的时候起作用。

  如果一个Annotation想要起作用的话,必须使用RUNTIME范围。以下是四种元注解

    1. Documented 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
    2. Inherited 指示注释类型被自动继承。
    3. Retention 指示注释类型的注释要保留多久。
    4. Target 指示注释类型所适用的程序元素的种类。

  还有一点就是注解是通过反射来实现的。

原文地址:https://www.cnblogs.com/hongcong/p/5792188.html