天天看点

自定义注解 @Retention相关注意事项

记录原因

isAnnotationPresent() 返回False

解决方案

自定义注解时,如果想通过反射获取注解信息必须加上

@Retention(RetentionPolicy.RUNTIME)

声明该注解的存活策略可以保留到运行时

扩展

@Retention

有3个值

@Retention(RetentionPolicy.SOURCE)

仅仅停留在源码,编译时去除

@Retention(RetentionPolicy.RUNTIME)

保留到运行时,通过反射可以获取注解信息 只有保留到运行时,调用isAnnotationPresent()才返回True

@Retention(RetentionPolicy.CLASS)

保留到编译后的字节码,运行时无法获得注解信息