14

I am going to deprecate a class in Java.

@Deprecated
class deprecatedClass

and I have list of this deprecated class,

List<deprecatedClass> listOfDeperecatedClass

So do I need to add the @Deprecated tag for this list too?


Edit: @Deprecated should have a capital 'D'.
See: http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html

4

5 回答 5

7

不,你不需要。添加注释@DeprecatedDeprecatedClass在每次使用时生成警告。


但是,您应该做的是将其他类中的方法标记为将您已弃用的类作为参数或将其返回为已弃用的方法。这适用于其他代码可能对您已弃用的类的实例进行的任何访问——公共字段、常量等。当然,如果没有已弃用的类的实例,就不能使用这些,因此无论如何都会给出警告,但是在正确的弃用注释和注释中,您应该提供解释并指出替代方案,这是您需要的有价值的信息给。

方法签名类似于合同,类签名也是如此。您是在告诉其他程序员他们可以调用哪些方法以及如何调用它们。您是在告诉他们哪些字段可以访问。其他程序员以此为基础编写代码。如果您确实需要打破该合同,您首先需要提供该合同的替代品(具有相同功能的新方法),并告诉他们并给他们时间切换到该新合同(弃用旧方法和类) .

当然,以上假设您正在向观众编码。如果您是唯一使用您的代码的人,并且您只想弃用以清理代码而不破坏构建,只需弃用该类,修复警告并将其删除。

于 2013-11-12T07:45:37.547 回答
4

Do you have operations on the List as part of your public interface? In that case, mark all those methods as deprecated too. Otherwise you should be fine.

于 2013-04-09T17:46:58.447 回答
2

您只需要将弃用消息添加到您要弃用的任何内容的声明中。它作为一个警告,人们应该避免使用已弃用的类的实现,例如在List<DeprecatedClass>.

于 2013-04-09T17:48:15.903 回答
1

只需标记为:

@Deprecated
List<deprecatedClass> listOfDeperecatedClass

应该没问题。

于 2013-04-09T17:57:42.657 回答
0

对于像我一样偶然发现这个问题的人需要注意的一点......我在 OpenJDK 14 上,我看到大写 D 不起作用,但小写 D 起作用!我的 Intellij 说错误的标签 @Deprecated 与小写 D 没有这样的警告。

其次,当我编译我的 maven 项目时,也只有小写 D 显示下面的警告......

[WARNING] <....>.java: <....>.java uses or overrides a deprecated API.
[WARNING] <....>.java: Recompile with -Xlint:deprecation for details. 
于 2021-12-01T23:26:54.223 回答