目录
一 笔记
注解作用:编译检查、被反射机制解析
二 定义用来决定是否要执行测试程序的注解类AnnotationTest09_Test.java
//使用@AnnotationTest09_Test注解的表示执行该测试程序;反之不执行;
@Target(ElementType.METHOD)//只能出现在方法上面
@Retention(RetentionPolicy.RUNTIME)//可以被反射
public @interface AnnotationTest09_Test {
}
三 定义用户操作的类AnnotationTest09_UserOperator.java
/**
* 2022/4/11
* function:用户操作的类
* 带着@AnnotationTest09_Test注解的表示执行该测试程序;反之不执行;
* 本案例中只有save()、modify()使用了@AnnotationTest09_Test注解,所以只执行save()、modify()方法;
* 其他没有使用@AnnotationTest09_Test注解的方法,不会进行执行;
*/
public class AnnotationTest09_UserOperator {
@AnnotationTest09_Test
public void save(){
System.out.println("保存。。。");
}
public void delete(){
System.out.println("删除。。。");
}
@AnnotationTest09_Test
public void modify(){
System.out.println("修改。。。");
}
public void getById(){
System.out.println("获取信息。。。");
}
}
三 测试类AnnotationTest09.java
public class AnnotationTest09 {
public static void main(String[] args) throws Exception{
// 获取class
Class<?> UserOperatorClass = Class.forName("com.wwx.AnnotationTest09_UserOperator");
// 创建对象
Object o = UserOperatorClass.newInstance();
// 获取该类的所有方法
Method[] methods = UserOperatorClass.getDeclaredMethods();
for(Method method:methods){//循环遍历所有方法
// 判断该方法是否有该注解
if (method.isAnnotationPresent(AnnotationTest09_Test.class)) {
// 执行该方法
method.invoke(o);
}
}
}
}