diff --git a/hutool-core/src/main/java/cn/hutool/core/annotation/MetaAnnotatedElement.java b/hutool-core/src/main/java/cn/hutool/core/annotation/MetaAnnotatedElement.java new file mode 100644 index 000000000..26e0567cc --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/annotation/MetaAnnotatedElement.java @@ -0,0 +1,322 @@ +package cn.hutool.core.annotation; + +import cn.hutool.core.stream.EasyStream; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjUtil; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Inherited; +import java.lang.reflect.AnnotatedElement; +import java.util.*; +import java.util.function.BiFunction; +import java.util.stream.Stream; + +/** + *
注解元素映射,用于包装一个{@link AnnotatedElement},然后将被包装的元素上,
+ * 直接声明的注解以及这些注解的元组全部解析为{@link ResolvedAnnotationMapping}。
+ * 从而用于支持对元注解的访问操作。
+ *
+ *
默认情况下,总是不扫描{@link java.lang}包下的注解, + * 并且在当前实例中,{@link Inherited}注解将不生效, + * 即通过directly方法将无法获得父类上带有{@link Inherited}的注解。 + * + *
当通过静态工厂方法创建时,该实例与关联的{@link ResolvedAnnotationMapping}都会针对{@link ResolvedAnnotationMapping}进行缓存,
+ * 从而避免频繁的反射与代理造成不必要的性能损耗。
+ *
+ * @author huangchengxing
+ * @see ResolvedAnnotationMapping
+ * @since 6.0.0
+ */
+public class MetaAnnotatedElement
+ * 默认情况下,已经处理过、或在{@link java.lang}包下的注解不会被处理
+ *
+ * @param mappings 当前已处理的注解
+ * @param annotation 注解对象
+ * @return 是否
+ */
+ protected boolean isNeedMapping(final Map