All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.core.annotation.AnnotationAttribute Maven / Gradle / Ivy

There is a newer version: 5.8.33
Show newest version
package cn.hutool.core.annotation;

import cn.hutool.core.util.ReflectUtil;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

/**
 * 

表示注解的某个属性,等同于绑定的调用对象的{@link Method}方法。
* 在{@link SynthesizedAggregateAnnotation}的解析以及取值过程中, * 可以通过设置{@link SynthesizedAnnotation}的注解属性, * 从而使得可以从一个注解对象中属性获取另一个注解对象的属性值 * *

一般情况下,注解属性的处理会发生在{@link SynthesizedAnnotationPostProcessor}调用时 * * @author huangchengxing * @see SynthesizedAnnotationPostProcessor * @see WrappedAnnotationAttribute * @see CacheableAnnotationAttribute * @see AbstractWrappedAnnotationAttribute * @see ForceAliasedAnnotationAttribute * @see AliasedAnnotationAttribute * @see MirroredAnnotationAttribute */ public interface AnnotationAttribute { /** * 获取注解对象 * * @return 注解对象 */ Annotation getAnnotation(); /** * 获取注解属性对应的方法 * * @return 注解属性对应的方法 */ Method getAttribute(); /** * 获取声明属性的注解类 * * @return 声明注解的注解类 */ default Class getAnnotationType() { return getAttribute().getDeclaringClass(); } /** * 获取属性名称 * * @return 属性名称 */ default String getAttributeName() { return getAttribute().getName(); } /** * 获取注解属性 * * @return 注解属性 */ default Object getValue() { return ReflectUtil.invoke(getAnnotation(), getAttribute()); } /** * 该注解属性的值是否等于默认值 * * @return 该注解属性的值是否等于默认值 */ boolean isValueEquivalentToDefaultValue(); /** * 获取属性类型 * * @return 属性类型 */ default Class getAttributeType() { return getAttribute().getReturnType(); } /** * 获取属性上的注解 * * @param 注解类型 * @param annotationType 注解类型 * @return 注解对象 */ default T getAnnotation(Class annotationType) { return getAttribute().getAnnotation(annotationType); } /** * 当前注解属性是否已经被{@link WrappedAnnotationAttribute}包装 * * @return boolean */ default boolean isWrapped() { return false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy