1.自定义注解类
详细注解上的@Target和@Retention可自行查阅功能
package com.zy.Annotion;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotion {
String name() default "张三";
int age();
}
2.编写一个测试类,使用我们自己写好的注解
package com.zy.Application;
import com.zy.Annotion.MyAnnotion;
import java.lang.reflect.Field;
/**
* @author Administrator
* @version 1.0
* @description TODO
* @date 2023/12/1 16:03
*/
public class TestAnnotion {
@MyAnnotion(age = 18)
private static int num;
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
System.out.println(num);
//拿到字节码
Class<TestAnnotion> testAnnotionClass = TestAnnotion.class;
//拿到所有成员变量
for(Field field : testAnnotionClass.getDeclaredFields()){
if(field.isAnnotationPresent(MyAnnotion.class)){
//拿到注解
MyAnnotion annotation = field.getAnnotation(MyAnnotion.class);
//拿到注解中的值
int age = annotation.age();
field.set(testAnnotionClass.newInstance(),age);
}
}
System.out.println(num);
}
}
下一章,会通过代码加文字形式展示如何使用自定义注解配合aop切面实现对某些方法的处理。
感兴趣,可以进入我的主页浏览哦