diff --git a/hutool-core/src/main/java/cn/hutool/core/annotation/AnnotationUtil.java b/hutool-core/src/main/java/cn/hutool/core/annotation/AnnotationUtil.java index a75affb8d..5d99bdf92 100755 --- a/hutool-core/src/main/java/cn/hutool/core/annotation/AnnotationUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/annotation/AnnotationUtil.java @@ -1,5 +1,6 @@ package cn.hutool.core.annotation; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ReflectUtil; @@ -16,6 +17,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.HashMap; import java.util.Map; +import java.util.Set; import java.util.function.Predicate; /** @@ -27,6 +29,58 @@ import java.util.function.Predicate; */ public class AnnotationUtil { + /** + * 元注解 + */ + static final Set> META_ANNOTATIONS = CollUtil.newHashSet(Target.class, // + Retention.class, // + Inherited.class, // + Documented.class, // + SuppressWarnings.class, // + Override.class, // + Deprecated.class// + ); + + /** + * 是否为Jdk自带的元注解。
+ * 包括: + * + * + * @param annotationType 注解类型 + * @return 是否为Jdk自带的元注解 + */ + public static boolean isJdkMateAnnotation(Class annotationType) { + return META_ANNOTATIONS.contains(annotationType); + } + + /** + * 是否不为Jdk自带的元注解。
+ * 包括: + * + * + * @param annotationType 注解类型 + * @return 是否为Jdk自带的元注解 + */ + public static boolean isNotJdkMateAnnotation(Class annotationType) { + return !isJdkMateAnnotation(annotationType); + } + /** * 将指定的被注解的元素转换为组合注解元素 * diff --git a/hutool-core/src/main/java/cn/hutool/core/annotation/CombinationAnnotationElement.java b/hutool-core/src/main/java/cn/hutool/core/annotation/CombinationAnnotationElement.java index 542793f79..e2e901d66 100755 --- a/hutool-core/src/main/java/cn/hutool/core/annotation/CombinationAnnotationElement.java +++ b/hutool-core/src/main/java/cn/hutool/core/annotation/CombinationAnnotationElement.java @@ -39,18 +39,6 @@ public class CombinationAnnotationElement implements AnnotatedElement, Serializa return new CombinationAnnotationElement(element, predicate); } - /** - * 元注解 - */ - private static final Set> META_ANNOTATIONS = CollUtil.newHashSet(Target.class, // - Retention.class, // - Inherited.class, // - Documented.class, // - SuppressWarnings.class, // - Override.class, // - Deprecated.class// - ); - /** * 注解类型与注解对象对应表 */ @@ -138,7 +126,7 @@ public class CombinationAnnotationElement implements AnnotatedElement, Serializa // 直接注解 for (Annotation annotation : annotations) { annotationType = annotation.annotationType(); - if (false == META_ANNOTATIONS.contains(annotationType)) { + if (AnnotationUtil.isNotJdkMateAnnotation(annotationType)) { if(test(annotation)){ declaredAnnotationMap.put(annotationType, annotation); } @@ -157,7 +145,7 @@ public class CombinationAnnotationElement implements AnnotatedElement, Serializa Class annotationType; for (Annotation annotation : annotations) { annotationType = annotation.annotationType(); - if (false == META_ANNOTATIONS.contains(annotationType)) { + if (AnnotationUtil.isNotJdkMateAnnotation(annotationType)) { if(test(annotation)){ annotationMap.put(annotationType, annotation); }