先来看看通常情况下,我们通过反射获取注解的值的场景:
那么现在我们定义一个 @Foo 注解,它有一个类型为 String 的 value 属性,该注解应用再Field上:
/**
* @Author 落叶飞翔的蜗牛
* @Date 2018/3/11
* @Description
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Foo {
String value();
}
再定义一个普通的Java对象 Bar,它有一个私有的String属性 value,并为它设置属性值为"test.annotation.value" 的 @Foo 注解
/**
* @Author 落叶飞翔我蜗牛
* @Date 2018/3/11
* @Description
*/
public class Bar {
@Foo("test.annotation.value")
private String value;
}
正常的获取注解属性值的场景:
/**
* @Author 落叶飞翔的蜗牛
* @Date 2018/3/10
* @Description
*/
@RunWith(SpringRunner.class)
public class ReflectionAnnotationTest {
@Test
public void test() throws NoSuchFieldException, IllegalAcc