2016-09-14 33 views
0

我有一个注释解决AliasFor注释值编程在Spring

@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()Class<D>? 我试图综合与AnnotationUtils注释,但是当我检索值我不断得到Class<Void>

回答

0

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

@Test 
public void shouldFindAliasedValue() { 

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

    then(actual).isEqualTo(D.class); 
}