Java 注解作用与应用场景
模拟Junit框架
需求:
- 定义若干个方法,只要加了MyTest注解,就会触发该方法执行。
分析: - 定义一个自定义注解MyTest,只能注解方法,存活范围是一直都在。
- 定义若干个方法,部分方法加上@MyTest注解修饰,部分方法不加
- 模拟一个junit程序,可以触发加了@MyTest注解方法执行
package frame;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@Target(ElementType.METHOD) //注解只能在方法使用
@Retention(RetentionPolicy.RUNTIME) //让注解可以一直存活
@interface MyTest {
}
public class DEMO {
// @MyTest
private void test1(){
System.out.println("-----test1-----");
}
@MyTest
public void test2(){
System.out.println("-----test2-----");
}
// @MyTest
public void test3(){
System.out.println("-----test3-----");
}
@MyTest
private void test4(){
System.out.println("-----test4-----");
}
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
Class demoClass = DEMO.class;
DEMO demo = new DEMO();
Method[] declaredMethods = demoClass.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
if (declaredMethod.isAnnotationPresent(MyTest.class)){
declaredMethod.setAccessible(true);
declaredMethod.invoke(demo);
}
}
}
}
运行结果
-----test2-----
-----test4-----
评论 (0)