public interface WrappedAnnotationAttribute extends AnnotationAttribute
表示一个被包装过的AnnotationAttribute,
该实例中的一些方法可能会被代理到另一个注解属性对象中,
从而使得通过原始的注解属性的方法获取到另一注解属性的值。
除了AnnotationAttribute.getValue()以外,其他方法的返回值应当尽可能与getOriginal()
返回的AnnotationAttribute对象的方法返回值一致。
当包装类被包装了多层后,则规则生效优先级按包装的先后顺序倒序排序,
比如a、b互为镜像,此时a、b两属性应当都被MirroredAnnotationAttribute包装,
若再指定c为a的别名字段,则c、a、b都要在原基础上再次包装一层AliasedAnnotationAttribute。
此时a、b同时被包装了两层,则执行时,优先执行AliasedAnnotationAttribute的逻辑,
当该规则不生效时,比如c只有默认值,此时上一次的MirroredAnnotationAttribute的逻辑才会生效。
被包装的AnnotationAttribute实际结构为一颗二叉树,
当包装类再次被包装时,实际上等于又添加了一个新的根节点,
此时需要同时更新树的全部关联叶子节点。
AnnotationAttribute,
ForceAliasedAnnotationAttribute,
AliasedAnnotationAttribute,
MirroredAnnotationAttribute| Modifier and Type | Method and Description |
|---|---|
Collection<AnnotationAttribute> |
getAllLinkedNonWrappedAttributes()
遍历以当前实例为根节点的树结构,获取所有未被包装的属性
|
default Annotation |
getAnnotation()
获取注解对象
|
default <T extends Annotation> |
getAnnotation(Class<T> annotationType)
获取属性上的注解
|
default Method |
getAttribute()
获取注解属性对应的方法
|
default Class<?> |
getAttributeType()
获取属性类型
|
AnnotationAttribute |
getLinked()
|
AnnotationAttribute |
getNonWrappedOriginal()
获取最初的被包装的
AnnotationAttribute |
AnnotationAttribute |
getOriginal()
获取被包装的
AnnotationAttribute对象,该对象也可能是AnnotationAttribute |
boolean |
isValueEquivalentToDefaultValue()
|
default boolean |
isWrapped()
当前注解属性是否已经被
WrappedAnnotationAttribute包装 |
getAnnotationType, getAttributeName, getValueAnnotationAttribute getOriginal()
AnnotationAttribute对象,该对象也可能是AnnotationAttributeAnnotationAttribute对象AnnotationAttribute getNonWrappedOriginal()
AnnotationAttributeAnnotationAttributeAnnotationAttribute getLinked()
Collection<AnnotationAttribute> getAllLinkedNonWrappedAttributes()
default Annotation getAnnotation()
getAnnotation in interface AnnotationAttributedefault Method getAttribute()
getAttribute in interface AnnotationAttributeboolean isValueEquivalentToDefaultValue()
isValueEquivalentToDefaultValue in interface AnnotationAttributedefault Class<?> getAttributeType()
getAttributeType in interface AnnotationAttributedefault <T extends Annotation> T getAnnotation(Class<T> annotationType)
getAnnotation in interface AnnotationAttributeT - 注解类型annotationType - 注解类型default boolean isWrapped()
WrappedAnnotationAttribute包装isWrapped in interface AnnotationAttributeCopyright © 2025. All rights reserved.