如何自定义注解,如何使用【注解】

本文介绍了Java中的注解,包括注解体的创建,元注解的作用,如@Target限制使用场景,@Retention控制留存时间,@Documented写入Javadoc,以及@Inherited的继承特性。通过示例展示了如何定义和使用注解,强调注解在AOP配置中的重要性。
摘要由CSDN通过智能技术生成

注解

自定义注解是我们开发和框架中必不可少的知识,作为一个高级开发者必备的技能。今天让我们深入了解下注解:

一个注解大致可以分为三个部分:注解体、元注解、注解属性

注解体

注解体是最简单的一个组成部分,只需要实例中一样有样学样即可。与接口的声明唯一的不同是在 interface 关键字前多了一个 @ 符号。

//声明了一个名为hello的注解体
@Retention(RetentionPolicy.RUNTIME) 
public @interface hello{
}

元注解

元注解(meta-annotation)本身也是一个注解,用来标记普通注解的存留时间、使用场景、继承属性、文档生成信息。

元注解是一个特殊的注解,它是 Java 源码中就自带的注解。在Java 中只有四个元注解,它们分别是:@Target@Retention@Documented@Inherited

@Target注解

Target 注解限定了该注解的使用场景。

它有下面这些取值:

ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.CONSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

@Retention注解

Retention 注解用来标记这个注解的留存时间。

它其有三个可选值:

RetentionPolicy.SOURCE。注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
RetentionPolicy.CLASS。注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
RetentionPolicy.RUNTIME。注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

@Documented

@ Documented 注解表示将注解信息写入到 javadoc 文档中。

在默认情况下,我们的注解信息是不会写入到 Javadoc 文档中的。但如果该注解有 @Documented 标识,那么该注解信息则会写入到 javadoc 文档中。

@Inherited

@ Inherited注解标识子类将继承父类的注解属性。

在下面的例子中,我们声明了一个 Sweet 注解,接着在 Peach 类使用了 @Sweet 注解,但是并没有在 RedPeach 类使用该注解。

举个栗子:一个日志注解

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

    /**
     * 操作内容
     */
    String value() default "";

    /**
     * 模块名
     */
    String moduleName() default "";

    /**
     * 操作类型
     */
    int  operateType() default 0;
}

注解可以通过Aop去配置注解的行为,让注解简单并作用最大化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杵意

谢谢金主打赏呀!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值