Java自定义注解

自定义Java注解

希望大家动动手指敲敲代码!

自定义注解

@元注解
@interface 注解名{
	类型 名称();//注解属性
}

Java自定义注解_第1张图片


元注解

元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解有以下几种:


java中元注解有四个: @Retention @Target @Document @Inherited

  1. @Retention:注解的保留位置

    • @Retention(RetentionPolicy.SOURCE):注解仅存在于源码中,在class字节码文件中不包含

    • @Retention(RetentionPolicy.CLASS):默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

    • @Retention(RetentionPolicy.RUNTIME):注解会在class字节码文件中存在,在运行时可以通过反射获取到

Java自定义注解_第2张图片

级别:RUNTIME > CLASS > SOURCE(即级别为RUNTIME时,也拥有以下两个级别)


  1. @Target:用于描述注解的范围,即注解在哪用。
    • @Target({ElementType.CONSTRUCTOR}):用于描述构造器
    • @Target({ElementType.FIELD}):用于描述域即类成员变量
    • @Target({ElementType.LOCAL_VARIABLE}):用于描述局部变量
    • @Target({ElementType.METHOD}):用于描述方法
    • @Target({ElementType.PACKAGE}):用于描述包
    • @Target({ElementType.PARAMETER}):用于描述参数
    • @Target({ElementType.TYPE}):用于描述类、接口(包括注解类型) 或enum声明
    • @Target({ElementType.TYPE_PARAMETER}):1.8版本开始,描述类、接口或enum参数的声明
    • @Target({ElementType.TYPE_USE}):1.8版本开始,描述一种类、接口或enum的使用声明

Java自定义注解_第3张图片

  1. @Document:用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。

Java自定义注解_第4张图片


  1. @Inherited:用于表示某个被标注的类型是被继承的。

Java自定义注解_第5张图片
在这里插入图片描述
Java自定义注解_第6张图片
Java自定义注解_第7张图片

学习注解后,可学习Java反射(拓展)结合起来使用。


注解属性

@元注解
@interface 注解名{
	类型 名称();//注解属性
}

default:属性中添加默认值,在使用注解时就可以不用为其添加值,未使用default标识的注解属性就恰恰相反。
Java自定义注解_第8张图片

value:属性名称只有一个,且名称为value时,在使用注解时给value赋值可以省略value
Java自定义注解_第9张图片

你可能感兴趣的:(java)