Java中的注解学习笔记

注解出现在jdk1.5。并且jdk1.5版本中内置了三种标准的注解,如下:

    @Override:表示当前方法的定义将覆盖超类中的方法。 @Deprecated:表示当前方法已过期,不推荐使用。如果使用,则该方法会出现一条删除线,表示不推荐使用。 @SuppressWarnings:告诉编译器,忽略指定的警告信息,即:不提示黄色下划线。

Java中提供的四种注解,作用就是创建自定义注解。

    @Target:说明注解的使用范围。通过和ElementType一起使用,指定注解的使用范围。

ElementType的常见属性值有:

TYPE:类,接口或者枚举
FIELD:域,包含枚举常量
METHOD:方法
PARAMETER:参数
CONSTRUCTOR:构造方法
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解类型
PACKAGE:包

例如:@Target(ElementType.Type)表明该注解只能在类、接口和枚举中使用。

    @Retention:称为“元注解”。指明该注解的生存周期,即:该注解保留到何时被销毁。

一般和RetentionPolicy一起使用,指明注解的生存周期。

RetentionType的属性值有:

SOURCE:保留至源码,编译后即丢弃。
CLASS: 保留至编译阶段,编译后的class文件中存在,当在jvm运行时丢弃,这是默认值。
RUNTIME: 保留至运行阶段,编译后的class文件中存在,当在jvm运行时保留,可以被反射调用。

举例:Retention(RetentionPolicy.RUNTIME)表示该注解将保留至运行阶段。

如果注解需要在反射中使用,那么就需要保留至运行阶段。

    @Documented:指明注解可以被例如javadoc的工具文档化。 @Inherited:允许子类继承父类中的注解。

自定义注解:

    先创建一个annotation,即:注解。类似于一个类。

使用@interface来说明一个注解。举例如下:

public @interface test {

}
    创建完成之后,可以为该注解指定生存周期,即:存在于编码阶段、还是编译阶段、还是运行阶段。
// 指定该注解保留至运行阶段
@Retention(RetentionPolicy.RUNTIME)
public @interface test{

}
    注解创建完后,可以为该注解添加属性。
@Retention(RetentionPolicy.RUNTIME)
public @interface test {
    // 声明一个字符串类型的属性value
    public String value();
}
注意:注解中属性的声明类似于抽象方法的声明。

声明的注解属性只能是:基本类型、String、Class、枚举、或者一维数组。

以上注解就创建完成了。

经验分享 程序员 微信小程序 职场和发展