package annotation;
public class test {
@mytest
public void demo1(){
System.out.println("demo1执行了");
}
@mytest
public void demo2(){
System.out.println("demo2执行了");
}
public void demo3(){
System.out.println("demo3执行了");
}
}
package annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(value = RetentionPolicy.RUNTIME)//加上此注解mytest不会消失
public @interface mytest {
}
package annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//核心运行类
public class corerunner {
public static void main(String []args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException{
//获得类的class
Class<test> clazz = test.class;
//获得class的所有方法
Method[] methods = clazz.getMethods();
//遍历所有的方法
for(Method m:methods){
if(m.isAnnotationPresent(mytest.class)){//方法是否有注解
m.invoke(clazz.newInstance());
}
}
}
}