注解模拟的Test方法
package com.ail.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* 自定义注解
* @author why
*
*/
//把编译时间放入到运行时间
@Retention(RetentionPolicy.RUNTIME)
public @interface Mytt {
}
package com.ail.annotation;
public class Mytest {
@Mytt
public void ren() {
System.out.println("wode zhujie");
}
@Mytt
public void ren1() {
System.out.println("wode zhujie2");
}
public void ren2() {
System.out.println("wode zhujie3");
}
}
package com.ail.annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MyAnnotation {
public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
//模拟test 方法
//获得类的Class 对象
Class c = Class.forName("com.ail.annotation.Mytest");
//获得类的全部方法
Method[] m = c.getMethods();
//遍历
for (Method mm : m) {
//查找时不是有我自己定义的注解
boolean b = mm.isAnnotationPresent(Mytt.class);
if(b==true) {
//通过反射执行方法
mm.invoke(c.newInstance(), null);
}
}
}
}