如何判断某个类是否有某个注解?
开发过程中,我们经常通过在类上打注解的方式来给它做标记,以便后期对其进行相应操作。
比如Springboot在启动的时候,会对标有@Component注解的类进行加载和初始化。
那么,如何判断某个类是否有某个注解呢?
很多人会说,这还不简单,不就是利用反射检索该类的注解集合里有没有这个注解不就好了吗。
但这样是不全面的,因为类可能继承自某个父类或者接口,而其父类或者接口上存在该注解。
同时,该注解可能是个复合注解,即该注解也是被其他注解所注解的。
所以,判断某个类是否有某个注解的完善流程应该包含4个方面:
检索该类是否直接被该注解标记;递归检索该类注解的注解中是否存在目标注解;递归检索该类的接口中是否存在目标注解;递归检索该类的父类是否存在目标注解。
Spring框架的AnnotationUtils.findAnnotation方法就是基于上述流程来实现的。
private static
共有 0 条评论