注解

什么是注解

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

一般分类

1.编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
/**
 * @author XXX
 * @version xxx
 */
 public class XXX{
 }
2.代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
3.编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
public class XXX {

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }
}

系统注解

元注解

@Target:表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中

ElemenetType.CONSTRUCTOR----------------------------构造器声明

ElemenetType.FIELD --------------------------------------域声明(包括 enum 实例)

ElemenetType.LOCAL_VARIABLE------------------------- 局部变量声明

ElemenetType.METHOD ----------------------------------方法声明

ElemenetType.PACKAGE --------------------------------- 包声明

ElemenetType.PARAMETER ------------------------------参数声明

ElemenetType.TYPE--------------------------------------- 类,接口(包括注解类型)或enum声明

@Retention:表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中

RetentionPolicy.SOURCE ---------------------------------注解将被编译器丢弃

RetentionPolicy.CLASS -----------------------------------注解在class文件中可用,但会被VM丢弃

RetentionPolicy.RUNTIME VM-------将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

@Documented:将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。

默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中

@Inherited:允许子类继承父类中的注解。

通过对注解上使用元注解Inherited声明出的注解,在使用时用在类上,可以被子类所继承,对属性或方法无效。

标准注解

@Override:对覆盖超类中方法的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告。

@Deprecated:对不应该再使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息。

@SuppressWarnings("all"):抑制一些能通过编译但是存在有可能运行异常的代码会发出警告。

@SafeVarargs:在JDK7出现的,表示“堆污染”警告;“堆污染”即是将一个不带泛型的变量赋值给一个带泛型的变量,将导致泛型变量污染,如果不加上面注解,编译器将给于提示,避免运行时异常。

results matching ""

    No results matching ""