我应该@Deprecate超类方法吗?

时间:2012-11-05 21:02:28

标签: java oop inheritance override deprecated

假设我正在扩展JFileChooser并制作一个易于使用的版本,我称之为SimpleFileChooser

它的结构可以是DIALOG_TYPE_OPENDIALOG_TYPE_SAVE - 因此,JFileChooser的{​​{1}}和showOpenDialog()方法是多余的。我用一个名为showSaveDialog()的方法替换它们,它返回一个布尔值,但这就是我发现自己处于两难境地的地方:

  

我应该覆盖打开/保存方法并添加showDialog()标记   它们以便API用户知道它们已经被取代了?会是   违反注释的original purpose

     

或者文档中的通知是否足够?如果是的话,应该在哪里   此通知应放在:在课程摘要中或在上面覆盖   方法?我是否应该首先覆盖这些方法?

提前致谢。

2 个答案:

答案 0 :(得分:8)

我认为您实际上正在构建,这是现有API的简化版本。因此,您应该使用合成而不是继承。隐藏新类中的原始JFileChooser并提供更简单的API。

作为最后的手段,如果其他代码需要,您可以提供public JFileChooser getRaw()方法来访问包装对象。

答案 1 :(得分:1)

@Deprecated表示您不应再使用该特定类或方法,因为它将来会被删除。该注释是为此而设计的。 所以很快回答,如果你不想让API用户再使用这个方法,你应该使用@Deprecated。因为否则您将最终使用仍在使用您在将来版本中删除的方法/类的用户,并且他们的项目在更新时将被破坏。