@Deprecated
注释目标定义为:
@Deprecated
另一方面,JavaDoc说:
在局部变量声明或参数声明或包声明上使用
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
批注对编译器发出的警告无效。
方法参数上可能需要@Deprecated
时可能出现的情况?
原因是向后兼容。
在Java 5和6中,@Deprecated
没有@Deprecated
元注释。Java 7添加了具有相同效果的@Target
元注释。
根据@Target
:
如果注释类型
@Target
documentation上不存在@Target
元注释,则可以将类型@Target
的注释写为除类型参数声明之外的任何声明的修饰符。
Oracle对永不中断行为抱有幻想:在JDK 6下编译的任何代码也应在JDK 7下编译。为了防止某些代码在形式参数上使用T
,还应包括T
等额外的元素类型。
[似乎似乎在PARAMETER
元注释中缺少@Deprecated
元素类型的错误,但实际上,以下代码在使用JDK 8或JDK 11时会编译:
ANNOTATION_TYPE