在 Spring 中以编程方式解析 AliasFor 注释值

2024-04-28

我有一个注释

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface A {
    Class<?> value();
}

和另一个使用的注释@AliasFor

@A (Void.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface B {

    @AliasFor(annotation = A.class)
    Class<?> value();
}

这是在课堂上使用的

@B(D.class)
public class C implements D {
}

如果我有一个实例C,我怎样才能以编程方式解决A.value() to Class<D>? 我正在尝试综合注释AnnotationUtils但是当我检索到我不断得到的值时Class<Void>.


经过一番挖掘后,答案是我使用了错误的类。代替AnnotationUtils可以用以下方法完成AnnotatedElementUtils:

@Test
public void shouldFindAliasedValue() {

    Class<?> actual = AnnotatedElementUtils.findMergedAnnotation(C.class, A.class).value();

    then(actual).isEqualTo(D.class);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring 中以编程方式解析 AliasFor 注释值 的相关文章

随机推荐