自定义注解实现

一、首先讲一下自定义注解需要用到的四个原注解

1.@interface
@interface用来声明自定义的注解
2.@Target
@Target的作用:用于描述注解的使用范围(ElementType有这几种取值TYPE,PACKAGE,CONSTRUCTOR(用于描述构造器),FIELD(用于描述域),
METHOD(用于描述方法),LOCAL_VARIABLE(用于描述局部变量),PARAMETER(用于描述参数))
修饰范围:第一种修饰包。第二种修饰类、接口、枚举、annotation类型。第三、四、五种修饰类成员(方法、构造方法、成员变量)。第六、七种修饰方法参数和本地变量。
3.@Retention
@Retention 表示需要在什么级别保存该注释信息,用于描述注解的生命周期(RetentionPolicy有三种取值:SOURCE,CLASS,RUNTIME)
作用:SOURCE在源文件中有效。CLASS在class文件中有效。RUNTIME在运行时有效,可被反射机制读取
4.@Documented(表示该注解是否可以生成到 API文档中。)
在该注解使用后,如果导出API文档,会将该注解相关的信息可以被例如javadoc此类的工具文档化。 注意:Documented是一个标记注解,没有成员。
5.@Inherited(使用@Inherited定义的注解具备继承性)
假设一个注解在定义时,使用了@Inherited,然后该注解在一个类上使用,如果这个类有子类,那么通过反射我们可以从类的子类上获取到同样的注解、

二、定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
/*一般情况下很少用到@Retention和@Inherited注解。如果需要的时候也可以加上*/
public @interface LoggerAnnotation {
    String userId();
    String oid();
    }

三、注解使用

@LoggerAnnotation(userId = "#root[0]", oid = "#root[2].lineId")
 public String addDay(int id,CreateDTO createDTO){
 }

userId = “#root[0]”:获取addDay方法的第一个参数值
oid = “#root[2].lineId”:获取的是addDay方法第二个参数DTO中的lineId参数值

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值