自定义注解(Annotation)的基本元素

        声明一个注解需要的东西

        修饰符 访问修饰符必须为public,不写默认为public;

        关键字 关键字为@interface;

        JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用来修饰注解。


目录

自定义注解:

使用案例代码截图

四种元注解:

@Target详解

@Retention详解

@Document详解

@Inherited详解


自定义注解:

        右键new class 创建一个Annotation的文件,用Java元注解标明即定义成功,如何标明接着往下看

java自定义注解的成员变量可以使用抽象类吗_元注解

package com.example.demo.annotation;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ZyjRunningLog {

}

java自定义注解的成员变量可以使用抽象类吗_类文件_02

        图中的@Target用的类型是ElementType.METHOD,应用与方法之上。如果需要放在类上,就是ElementType.TYPE,按照对应的类型放在对应的地方,具体按照自己的实际情况来配置类型。往下看元注解里面有每一种具体类型的配置。

        图中的@Retention用的类型是RetentionPolicy.RUNTIME,代表的是由JVM 加载,包含在类文件中,在运行时可以被获取到。往下看元注解里面有每一种具体类型的配置。

使用案例代码截图

java自定义注解的成员变量可以使用抽象类吗_类文件_03

四种元注解:

        java为注解开发特准备的注解。

@Target详解

说明了注解所修饰的对象范围

Target类型

描述

ElementType.TYPE

应用于类、接口(包括注解类型)、枚举

ElementType.FIELD

应用于属性(包括枚举中的常量)

ElementType.METHOD

应用于方法

ElementType.PARAMETER

应用于方法的形参

ElementType.CONSTRUCTOR

应用于构造函数

ElementType.LOCAL_VARIABLE

应用于局部变量

ElementType.ANNOTATION_TYPE

应用于注解类型

ElementType.PACKAGE

应用于包

ElementType.TYPE_PARAMETER

1.8版本新增,应用于类型变量)

ElementType.TYPE_USE

1.8版本新增,应用于任何使用类型的语句中(例如声明语句、泛型和强制转换语句中的类型)

@Retention详解

   表明该注解的生命周期

生命周期类型

描述

RetentionPolicy.SOURCE

编译时被丢弃,不包含在类文件中

RetentionPolicy.CLASS

JVM加载时被丢弃,包含在类文件中,默认值

RetentionPolicy.RUNTIME

由JVM 加载,包含在类文件中,在运行时可以被获取到

@Document详解

   表明该注解标记的元素可以被Javadoc 或类似的工具文档化,这个东西没有什么实际应用,了解即可

@Inherited详解

   允许子类继承父类中的注解。即拥有此注解的元素其子类可以继承父类的注解。