This question already has answers here:
Why the RetentionPolicy for @deprecated is RUNTIME?
(6个答案)
5年前关闭。
以下是@Deprecated批注的文档。
我的问题是:
(6个答案)
5年前关闭。
以下是@Deprecated批注的文档。
/**
* A program element annotated @Deprecated is one that programmers
* are discouraged from using, typically because it is dangerous,
* or because a better alternative exists. Compilers warn when a
* deprecated program element is used or overridden in non-deprecated code.
*
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
我的问题是:
@Deprecated
(标记注释)供程序员指示不鼓励使用此方法/字段/包...,然后为什么将RetentionPolicy
设置为RUNTIME
为什么不使用RetentionPolicy.CLASS
用来? 最佳答案
Java中的反射可用于在运行时读取类的注释。如果使用RetentionPolicy.CLASS
,则@Deprecated
注释将无法像这样读取。
例如,反射程序可以读取用户提供的类,并执行所有不建议使用的静态方法而没有任何参数。也许有人可以提出一个比这更好的例子。单元测试框架可能会利用它的某些原因。
关于java - 为什么将RetentionPolicy.RUNTIME用于@Deprecated注释? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25710846/
10-11 01:33