diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java index 16f71e573..da2970df9 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/AnnotationUtil.java @@ -291,15 +291,8 @@ public class AnnotationUtil { public static ElementType[] getTargetType(final Class annotationType) { final Target target = annotationType.getAnnotation(Target.class); if (null == target) { - return new ElementType[]{ElementType.TYPE, // - ElementType.FIELD, // - ElementType.METHOD, // - ElementType.PARAMETER, // - ElementType.CONSTRUCTOR, // - ElementType.LOCAL_VARIABLE, // - ElementType.ANNOTATION_TYPE, // - ElementType.PACKAGE// - }; + // 如果没有定义@target元注解,则表示支持所有节点 + return ElementType.values(); } return target.value(); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/HierarchicalAnnotatedElements.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/HierarchicalAnnotatedElements.java index 48ab7b0a2..ca8c9b5aa 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/HierarchicalAnnotatedElements.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/HierarchicalAnnotatedElements.java @@ -14,6 +14,7 @@ package org.dromara.hutool.core.annotation.elements; import org.dromara.hutool.core.annotation.AnnotationUtil; import org.dromara.hutool.core.collection.CollUtil; +import org.dromara.hutool.core.collection.set.SetUtil; import org.dromara.hutool.core.reflect.ClassUtil; import org.dromara.hutool.core.reflect.method.MethodUtil; import org.dromara.hutool.core.text.CharSequenceUtil; @@ -274,13 +275,13 @@ public class HierarchicalAnnotatedElements implements AnnotatedElement, Iterable // ========================= protected ========================= /** - * 获取当前元素及层级结构中的关联元素的映射对象 + * 获取当前元素及层级结构中的关联元素的映射对象,结果只读 * * @return 元素映射对象 */ - protected final Set getElementMappings() { + public final Set getElementMappings() { initElementMappingsIfNecessary(); - return elementMappings; + return SetUtil.view(this.elementMappings); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/MetaAnnotatedElement.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/MetaAnnotatedElement.java index c01aa10ab..1041ae5e7 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/MetaAnnotatedElement.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/elements/MetaAnnotatedElement.java @@ -82,7 +82,7 @@ public class MetaAnnotatedElement> imple * @param element 被注解元素 * @param mappingFactory 创建{@link AnnotationMapping}的工厂方法,返回值为{@code null}时将忽略该注解 */ - MetaAnnotatedElement(final AnnotatedElement element, final BiFunction mappingFactory) { + public MetaAnnotatedElement(final AnnotatedElement element, final BiFunction mappingFactory) { this.element = Objects.requireNonNull(element); this.mappingFactory = Objects.requireNonNull(mappingFactory); // 等待懒加载 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/package-info.java b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/package-info.java index aeaed2524..80cec9c3f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/annotation/package-info.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/annotation/package-info.java @@ -11,7 +11,13 @@ */ /** - * 注解包,提供增强型注解和注解工具类 + * 注解包,提供增强型注解和注解工具类,处理包括:
+ *
    + *
  • 注解元素(AnnotatedElement)上的注解。
  • + *
  • 父元素上的注解(包括类、接口、方法、属性)。
  • + *
  • 注解上的注解。
  • + *
  • 父元素上的注解上的注解。
  • + *
* * @author looly *