模拟@Test功能(注解)

模拟@Test功能(注解)_第1张图片模拟@Test功能(注解)_第2张图片模拟@Test功能(注解)_第3张图片模拟@Test功能(注解)_第4张图片模拟@Test功能(注解)_第5张图片

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 clazz = test.class;
		//获得class的所有方法
		Method[] methods = clazz.getMethods();
		//遍历所有的方法
		for(Method m:methods){
			if(m.isAnnotationPresent(mytest.class)){//方法是否有注解
				m.invoke(clazz.newInstance());
			}
		}
	}
}


你可能感兴趣的:(模拟@Test功能(注解))