通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
解析註解3
解析註解2
解析註解1
概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
另外的一种解析注解方法
解析方法上的注解方法
解析类上的注解方法
父类上面有注解,子类没有注解。父类支持@Inherited的话,按照上面获取类上注解的方法,能获取父类的注解。
@Retention(RetentionPolicy.RUNTIME) 生命周期:运行时
注意:上面获取类和方法上的注解,只能获取运行时的注解。
RetentionPolicy.SOURCE 只在源码显示,编译时会丢弃
RetentionPolicy.CLASS 编译时会记录到class中
4. 获取方法上的注解,两种方法
获取注解实例:
使用类加载器加载类
找到类上的注解
拿到注解实例
给注解起名字,直接@Decription(""),在“”中加字符串。
(后面解析这两个注解)
解析注解概念:
通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
@Inherited注解子类可以继承:注意的点:
1,父类不能时接口
2,子类只能继承父类类上面的注解,不能继承方法上的注解
如果是在运行中解析注解,注解的生命周期@Retention(参数)必须为@Retention(RetentionPolicy.RUNTIME)
@Inherited 允许子类继承
如果父类是接口的话子类就无法继承他的注解,而且子类只能继承父类类上面的注解,不能继承方法上面的注解
解析方法的注解
解析类的注解
解析注解:
解析注解:
通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
步骤1:使用类加载器加载类
Class c=Class.forName("com.ann.test.Child");
步骤2:找到类上面的注解
isAnnotationPresent(类类型):Class对象的方法,判断当前类类型是否存在某个类类型的注解,返回类型为boolean。
boolean isExist=c.isAnnotationPresent(Description.class);
步骤3:获取类上自定义注解实例,需要强制类型转换。
Description d=(Description)c.getAnnotation(Description.class);
步骤4:获取方法上的注解,首先,遍历所有方法,通过方法对象的isAnnotation查看是否有自定义注解,如果存在则输出方法的自定义注解的信息。
第二种解析方法:获取这个方法的所有注解,Annotation [] as=m.getAnnotations();然后遍历该注解,如果遍历的注解是Description类型,则把遍历的注解强转为Description类型,并进行输出value()信息。
@Inherited:当自定义注解上使用了该注解,如果在父类上标识该注解,解析一个子类,子类也可以获取该注解的信息。
解析方法的注解;
方法2
解析方法的注解;
方法1
解析注解。
子类注解继承只能够作用于类,继承之后只会继承类上面的注解。
解析注解概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
步骤1:使用类加载器加载类
Class c=Class.forName("com.ann.test.Child");
步骤2:找到类上面的注解
isAnnotationPresent(类类型):Class对象的方法,判断当前类类型是否存在某个类类型的注解,返回类型为boolean。
boolean isExist=c.isAnnotationPresent(Description.class);
步骤3:获取类上自定义注解实例,需要强制类型转换。
Description d=(Description)c.getAnnotation(Description.class);
步骤4:获取方法上的注解,首先,遍历所有方法,通过方法对象的isAnnotation查看是否有自定义注解,如果存在则输出方法的自定义注解的信息。
第二种解析方法:获取这个方法的所有注解,Annotation [] as=m.getAnnotations();然后遍历该注解,如果遍历的注解是Description类型,则把遍历的注解强转为Description类型,并进行输出value()信息。
@Inherited:当自定义注解上使用了该注解,如果在父类上标识该注解,解析一个子类,子类也可以获取该注解的信息。
解析注解的步骤:
1、使用类加载器加载类
2、找到类上面的注解
isAnnotationPresent
getAnnotation
anno.value
3、拿到类注解实例
方法也一样,拿到方法的实例
inherit只允许子类继承注解,接口不行
Java--注解--解析方法上的注解
Java--注解--解析类上的注解
Java--注解--解析注解
@Inherited注解 讲解开始地方