个人网站模块,做网站niche,小蓝本企业查询官网,WordPress 代码修改目录
1、什么是注解的解析#xff1f;
2、解析注解的案例
1、自定义一个注解
2、在类和方法上使用自己定义的注解
3、解析注解
3、模拟Junit框架案例
1、自定义一个MyTest注解
2、定义一个测试类#xff0c;使用自定义的注解
3、写一个启动类 本文章主要讲解什么是注…目录
1、什么是注解的解析
2、解析注解的案例
1、自定义一个注解
2、在类和方法上使用自己定义的注解
3、解析注解
3、模拟Junit框架案例
1、自定义一个MyTest注解
2、定义一个测试类使用自定义的注解
3、写一个启动类 本文章主要讲解什么是注解的解析、以及注解的解析应用场景代码演示、用注解和反射模拟junit框架代码演示
不清楚注解和反射的同学可以先看我之前发的文章哦 1、什么是注解的解析
就是判断类上、方法上、成员变量上是否存在注解并把注解里面的内容给解析出来 2、解析注解的案例
1、自定义一个注解
Target({ElementType.TYPE,ElementType.METHOD}) //作用范围为类和方法
Retention(RetentionPolicy.RUNTIME) //运行时有效
public interface MyAnnotation {String value();double aaa() default 100;String[] bbb();
}2、在类和方法上使用自己定义的注解
MyAnnotation(value 大美丽,bbb{爱漂亮,很精致})
public class MyClass {MyAnnotation(value 小林子,aaa 200,bbb{爱学习,很努力})private String myMethod(){return 一个成员方法而已;}
} 3、解析注解
三部曲
1、得到需要解析的类的class对象进而获取该类指定 方法名
2、判断类或者方法上是否有该注解isAnnotationPresent()
3、获取指定的注解对象getDeclaredAnnotation()
public class AnalysisAnnotation {public static void main(String[] args) throws Exception {//1、先得到需要解析的类的class对象Class myClassClass MyClass.class;//判断类上是否有这个MyAnnotation注解if (myClassClass.isAnnotationPresent(MyAnnotation.class)){//获取指定的注解对象MyAnnotation myAnnotation (MyAnnotation)myClassClass.getDeclaredAnnotation(MyAnnotation.class);System.out.println(myAnnotation.aaa());System.out.println(myAnnotation.value());System.out.println(Arrays.toString(myAnnotation.bbb()));}System.out.println();Method declaredMethod myClassClass.getDeclaredMethod(myMethod);//判断方法上是否有这个MyAnnotation注解if (declaredMethod.isAnnotationPresent(MyAnnotation.class)){//获取指定的注解对象MyAnnotation myAnnotation (MyAnnotation)declaredMethod.getDeclaredAnnotation(MyAnnotation.class);System.out.println(myAnnotation.aaa());System.out.println(myAnnotation.value());System.out.println(Arrays.toString(myAnnotation.bbb()));}}
}
运行该方法可以看到控制台的打印正是我们使用注解是传入的值。 3、模拟Junit框架案例
实现方式注解结合反射的方式 1、自定义一个MyTest注解
Target(ElementType.METHOD) //表示只能作用在方法上
Retention(RetentionPolicy.RUNTIME) //表示生命为运行时有效
public interface MyTest {
}2、定义一个测试类使用自定义的注解
其中方法test2()、test3()是没有加注解的
public class JunitTest {//使用Junit框架必须是公开无参数无返回值的//我们使用自己的注解MyTestpublic void test1(){System.out.println(我是test1);}public void test2(){System.out.println(我是test2);}public void test3(){System.out.println(我是test3);}MyTestpublic void test4(){System.out.println(我是test4);}
}
3、写一个启动类
我们需要启动加了注解的方法没有加注解的方法则不启动。
注意看代码注释 public static void main(String[] args) throws Exception {JunitTest junitTest new JunitTest();//1、获取JunitTest类的class文件Class junitTestClass JunitTest.class;//2、获取该类的所有方法Method[] declaredMethods junitTestClass.getDeclaredMethods();for (Method declaredMethod : declaredMethods) {//3、判断该方法是否加了MyTest注解if (declaredMethod.isAnnotationPresent(MyTest.class)){//4、如果已经包含该注解则该方法启动。记住方法是依赖于对象的所以我们得实例化一个对象传进去。declaredMethod.invoke(junitTest);}}}
执行该启动类可以看到只有加了MyTest注解的方法才会执行 注解是用来标记程序是为了让其他程序根据注解信息决定怎么去对待它们。
例如Junit框架案例加了注解就执行不加注解就不执行。 以上就是我对如何自定义框架的理解啦希望能帮到大家有问题的地方欢迎大家一起讨论
后续会不断更新作品欢迎大家一起讨论学习。❤❤❤