时间:2021-05-19
一点睛
注解若想发挥更大作用,还需借助反射机制之力。通过反射,可以取得一个方法上声明的注解的全部内容。
一般有两种需求:
1取得方法中全部的注解,通过调用getAnnotations来实现。
2判断操作是否是指定注解,通过调用getAnnotation来实现。
下面从源码角度来说明怎样获取这些注解信息。
二 源码导读——取得方法中全部的注解
public class AccessibleObject implements AnnotatedElement { ... //取得全部Annotation public Annotation[] getAnnotations() { return getDeclaredAnnotations(); } ...}public final class Method extends Executable { ... public Annotation[] getDeclaredAnnotations() { //针对Method类,需要调用父类的getDeclaredAnnotations方法 return super.getDeclaredAnnotations(); } ...}//Method的父类Executable的getDeclaredAnnotations实现全部注解信息的获取public abstract class Executable extends AccessibleObject implements Member, GenericDeclaration { ... public Annotation[] getDeclaredAnnotations() { return AnnotationParser.toArray(declaredAnnotations()); } ...}三 源码导读——判断操作是否是指定注解
public final class Method extends Executable { ... ////取得指定Annotation public <T extends Annotation> T getAnnotation(Class<T> annotationClass) { return super.getAnnotation(annotationClass); } ...}public abstract class Executable extends AccessibleObject implements Member, GenericDeclaration { ... public <T extends Annotation> T getAnnotation(Class<T> annotationClass) { Objects.requireNonNull(annotationClass); //获得指定注解类的信息 return annotationClass.cast(declaredAnnotations().get(annotationClass)); } ...}总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java反射机制原理与用法。分享给大家供大家参考,具体如下:Java反射机制Reflection(反射)是被视为动态语言的关键,反射机制允许程序在
eventbus原理如下: EventBus底层采用的是注解和反射的方式来获取订阅方法信息(首先是注解获取,若注解获取不到,再用反射),当前订阅者是添加到Ev
本文实例讲述了Java通过反射访问注解信息的方法。分享给大家供大家参考,具体如下:一点睛利用Java的反射机制,可以访问注解信息。比如在调用某个方法时,需要知道
场景:根据方法上的注解,通过java反射方式找到需要执行的的方法。1.注解类/**注解作用在方法上*/@Target({ElementType.METHOD})
Java注解的原理java:注解使用,什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特