覆盖已弃用的方法是不好的做法吗?

Par*_*vil 6 java deprecated deprecation-warning

由于该方法show()已被弃用,此代码是不好的做法吗?在这里覆盖可以吗?

public class Window extends JFrame {

    public Window() {
        // Do things.
    }

    public void show() { // <- Comes up with a warning as deprecated code.
        // Do other things.
    }
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*hat 4

当您要扩展它的类时,最好避免覆盖已弃用的方法,因为在将来的版本中,当/如果该方法被删除,并且您需要升级到库的较新版本时,您将不得不重新工作使用已弃用的已删除方法

如果在您的实例中,这是您要扩展的JFrame类,并且您打算重写该show()方法,则可以重写该setVisible(boolean b) 方法 ( doc ),该方法是javadocshow()中提到的方法的替换。

此外,不建议重写基类方法并完全更改其功能,因为

  • 您不能将该方法用于其原始用例
  • 当您实际上可以创建一个清楚指示其功能的新方法时,该方法的意图会变得具有误导性,并且重写该方法毫无意义

  • @Parzavil 重写方法以完全改变其意图更糟糕 (3认同)