已弃用的API和旧的API之间的区别?

已弃用的API和旧的API之间的区别?,第1张

已弃用的API和旧的API之间的区别?

从Sun官方词汇表中:

弃用 :指不再推荐的类,接口,构造函数,方法或字段,并且在以后的版本中可能不再存在。

从何时弃用指南:

您可能已经听说过“自嘲的幽默”一词,或使演讲者的重要性降至最低的幽默。弃用的类或方法就是这样。它不再重要。实际上,它是如此不重要,以致您不再应该使用它,因为它已被取代,并且将来可能不再存在。

@Deprecated
注释进一步进了一步和危险警告:

注释的程序元素

@Deprecated
是不鼓励程序员使用的元素,通常是因为这样做很 危险 ,或者因为存在更好的替代方法。

参考文献
  • java.sun.com词汇表
  • 语言指南/如何以及何时弃用API
  • 注释类型弃用的API

请注意,官方词汇表并未定义“传统”的含义。很有可能是乔什·布洛赫(Josh
Bloch)使用的一个术语,没有确切的定义。但是,这意味着总是不要在新代码中使用遗留类,并且存在更好的替代方法。

也许使用旧版但未弃用的类的旧代码不需要任何 *** 作,因为至少到目前为止,它们没有停止存在于未来版本中的危险。

相反,弃用则明确警告它们可能不再存在,因此应采取措施迁移到替代产品。


有效Java 2nd Edition的报价

为了比较这些术语在上下文中的使用方式,以下是这些书中引用 “不赞成使用” 一词的引文:

项目7:避免终结器
:声称保证终结的唯一方法是

System.runFinalizersOnExit
及其邪恶的孪生兄弟
Runtime.runFinalizersOnExit
。这些方法存在致命缺陷,已被弃用。

项目66:同步访问共享的可变数据 :库提供了该

Thread.stop
方法,但是很久以前不赞成使用此方法,因为它本质上是 不安全的
-使用该方法可能会导致数据损坏。

项目70:文档线程安全性 :该

System.runFinalizersOnExit
方法是线程恶意的,已被弃用。

项目73:避免线程组 :它们使您可以一次将某些

Thread
原语应用于一堆线程。这些原语中有几个已被弃用,其余的则很少使用。线程组已过时。

相比之下,这些是出现 “遗留” 一词的引号:

第23项:不要在新代码中使用原始类型 :提供它们是为了与在引入泛型之前的旧代码保持兼容性和互 *** 作性。

第25项:更喜欢使用数组列表 :擦除是使泛型类型与不使用泛型的旧代码自由互 *** 作的原因。

第29项:考虑类型安全的异构容器 :这些包装器对于跟踪谁在混合通用代码和旧代码的应用程序中向集合中添加了错误类型的元素的人很有用。

条款54:明智地使用本机方法
:它们提供对遗留代码库的访问,而遗留代码库又可以提供对遗留数据的访问。[…]使用本机方法访问遗留代码也是合法的。[…]如果您必须使用本机方法来访问低级资源或旧版库,请使用尽可能少的本机代码并对其进行全面测试。

项目69:建议并发实用程序等待并通知
:虽然您应该始终优先使用并发实用程序,而不是

wait
notify
,但是您可能必须维护使用
wait
和的旧代码
notify

这些引号不是经过精心选择的:它们都是在书中出现 “已弃用”“旧版” 一词的所有实例。Bloch的信息在这里很清楚:

  • 不推荐使用的方法(例如
    Thread.stop
    )是危险的, 绝对 不要使用。
  • 另一方面,例如
    wait/notify
    可以保留在旧代码中,但不应在新代码中使用。

我自己的主观意见

我的解释是,弃用某些东西就承认这是一个错误,从一开始就没有好处。另一方面,将某事物分类为遗留物就意味着该事物在过去已经足够了,但已经达到了目的,并且对于现在和将来都不再足够。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5177212.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存