初识【自定义注解】

自定义注解

看了一些资料说 自定义注解一般都是配合Spring的AOP进行使用
然后自定义注解 有点像 抽象方法 里面不能有方法体(原本以为可以直接写个方法在里面,那就太好用了),返回类型必须是基础类型
一般都是长这样的
public @interface iAnnotation {
	String name() default "";
...
}

下面说说我了解到的基础用法

步骤

1.创建注解

public @interface iAnnotation {}

2.在自己创建的注解上面 加上元注解

第一个常用的元注解@Target
@Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD})

这里的 METHOD , TYPE , FIELD 都是枚举类(枚举类又要补课了),指的是注解只允许加在 METHOD方法,TYPE类,FIELD字段 上面

第二个常用的元注解@Retention
@Retention(RetentionPolicy.RUNTIME)

一般都是用这个,运行时别的代码可以使用这个注解

3.使用注解

在相对应的地方上使用注解

如果在类上使用了 注解
if(类名.getClass().isAnnotationPresent(iAnnotation.class)){}

判断 这个类上 有没有使用 自定义注解
if值为真,有使用自定义注解 可以进行相对应的操作

如果在方法上使用注解
for(Method method : 类名.getClass().getDeclaredMethods()){
	if(methond.isAnnotationPresent(iAnnotation.class)){
		method.invoke(类名)
	}
}

这里用了反射获取该类的全方法名
但是拿到的是一个数组 所以要用for-each循环将每个 method取出来
然后注意判断 是否有使用自定义注解
有的话就 调用该方法(使用反射的方式)

如果在方法上使用注解并且有带参数,例如@iAnnotation(times = 3)
for(Method method : 类名.getClass().getDeclaredMethods()){//先拿到所有方法
	if(methond.isAnnotationPresent(iAnnotation.class)){//判断有没有用
		iAnnotation annotation =
					 methond.getAnnotation(iAnnotation.class)//获取注解
		annotation.times() //这里就拿到了注解里面写的times=3
	}
}

当然还可以getDeclaredFields()拿取字段名

原视频讲的很棒的 链接🔗

https://www.bilibili.com/video/BV1eo4y1p7uH/?spm_id_from=333.337.search-card.all.click&vd_source=5951f25d79b162d0d6918adcc1984db1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值