java-将@Deprecated批注添加到超类,子类或两者都添加?

我想弃用一种特定的方法.现在,此方法需要一个新的参数,但我想保留以前的实现以实现向后兼容.

是否应该仅在超类(在library-api项目中),子类(在library-impl项目中)或两者上都添加@Deprecated批注?

解决方法:

@Deprecated注释未使用@Inherited进行注释.因此,该注释将不会自动应用于继承的方法.

这不一定是问题,因为通常IDE会根据声明的类型进行检查.因此,如果您在超类/接口上弃用该方法,则即使您使用未明确弃用该方法的子类/实现,IDE也会抱怨.我的意思是:

SomeType x = new Abc();   // where Abc is an implementation or subclass of SomeType
x.doSomething();   // IDE should still complain if SomeType#doSomething() is deprecated

如果使用实现者/子类而不是接口/超类进行类型声明,则可能需要在实现/重写方法上使用@Deprecated批注.虽然在很大程度上取决于代码分析器.从理论上讲,即使您不将其用于类型声明,它仍然可以检查接口/超类是否已弃用.

Abc x = new Abc();
x.doSomething();   // here you're on your own if Abc#doSomething() is not deprecated
上一篇:修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类


下一篇:PHP-不建议使用mcrypt 7.1 /删除7.2