黑马程序员技术交流社区
标题:
为什么说@Deprecate的Retention是Runtime的?
[打印本页]
作者:
赖龙威
时间:
2013-10-15 16:46
标题:
为什么说@Deprecate的Retention是Runtime的?
为什么说@Deprecate的Retention是Runtime的?不理解
作者:
bird_not_fat
时间:
2013-10-16 22:54
这个问题我今天搞明白啦~嘿嘿,是这么回事,Retention的值有三个,SOURCE,CLASS,RUNTIME,@Deprecate是标明该方法是过时的,
1.Retention值为SOURCE时,该注解在编译的时候就被过滤掉
2.Retention值为CLASS,该注解保存在.class文件中,在反射获取字节对象的时候被过滤掉。
3.Retention值为RUNTIME,该注解在反射的时候也能被取到。
我们做个实验:
如果我们通过反射可以获取@Deprecate注解对象并打印出来,那么@Deprecate就是RUNTIME的:
@Deprecated
public class AnnotationMain {
public static void main(String[] args) {
AnnotationMain at = new AnnotationMain();
Class atClass = at.getClass();
if(atClass.isAnnotationPresent(Deprecated.class)){
Deprecated d = (Deprecated)atClass.getAnnotation(Deprecated.class);
System.out.println(d);
}
}
}
复制代码
结果输出@java.lang.Deprecated()说明确实如此!
作者:
李江
时间:
2013-10-18 19:49
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2