尝试创建一个单击并拖动GUI,我不小心覆盖了我的子类中的Component.move
。每当调用Component.setLocation
时,这样做会导致堆栈溢出。
重命名我的移动方法后,这并没有发生。我发现我覆盖了move
并且被setLocation
调用了。
但是,Oracle文档指出move
很久以前就已被弃用。为什么它仍由setLocation
使用?这是否意味着setLocation
也被弃用或move
不是?
答案 0 :(得分:0)
任何注释为@Deprecated
的api表示将来会删除它。弃用的api来自客户'观点不是供应商。如果将来move
方法删除,则供应商可以自由更改setLocation
,但客户无法更新代码以便调用new
api。
setLocation
注释的 @Deprecated
表示您可以很高兴在未来的jdk中运行该程序而不进行任何更改。
答案 1 :(得分:0)
可能仍然存在不推荐使用的方法以支持应用程序的向后兼容性,或者告诉开发人员将在库的未来版本中删除该方法。
一个已弃用的方法本身仍然完全正常并且有效,但它表明存在一种不同的,可取的方式来做同样的事情。
其他仍在使用弃用方法的方法(通常具有不同的功能)不一定会弃用。它们的实现可能已经过时,但API不是。