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, getValue
AnnotationAttribute getOriginal()
AnnotationAttribute
对象,该对象也可能是AnnotationAttribute
AnnotationAttribute
对象AnnotationAttribute getNonWrappedOriginal()
AnnotationAttribute
AnnotationAttribute
AnnotationAttribute getLinked()
Collection<AnnotationAttribute> getAllLinkedNonWrappedAttributes()
default Annotation getAnnotation()
getAnnotation
in interface AnnotationAttribute
default Method getAttribute()
getAttribute
in interface AnnotationAttribute
boolean isValueEquivalentToDefaultValue()
isValueEquivalentToDefaultValue
in interface AnnotationAttribute
default Class<?> getAttributeType()
getAttributeType
in interface AnnotationAttribute
default <T extends Annotation> T getAnnotation(Class<T> annotationType)
getAnnotation
in interface AnnotationAttribute
T
- 注解类型annotationType
- 注解类型default boolean isWrapped()
WrappedAnnotationAttribute
包装isWrapped
in interface AnnotationAttribute
Copyright © 2024. All rights reserved.