在方法参数上使用@Deprecated的原因是什么?

问题描述 投票:2回答:1

@Deprecated注释目标定义为:

@Deprecated

另一方面,JavaDoc说:

在局部变量声明或参数声明或包声明上使用@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE}) 批注对编译器发出的警告无效。

方法参数上可能需要@Deprecated时可能出现的情况?

java annotations deprecated
1个回答
0
投票

原因是向后兼容。

在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
© www.soinside.com 2019 - 2024. All rights reserved.