一般不会,使用 deprecated 方法并不是绝对错误的,只要你有一个很好的应急计划,以避免任何问题,如果/当这些方法从图书馆你're using. With Java API itself this never happens but with just about anything else it means that it'将被删除 . 如果你特别打算不升级(虽然你很可能长远来看)你的软件's supporting libraries then there'使用 deprecated 方法没问题 .
15 回答
这没有错,但是在软件的未来版本中删除了一些不推荐使用的方法,因此最终可能无法使用代码 .
术语
来自官方的Sun词汇表:
从何时何时弃用指南:
@Deprecated
注释更进一步,并警告危险:参考文献
java.sun.com Glossary
Language guide/How and When to Deprecate APIs
Annotation Type Deprecated API
是对还是错?
使用弃用方法是对还是错的问题必须逐个审查 . 以下是有效Java第二版中出现"deprecated"一词的 ALL 引号:
所以至少在上述所有方法中,使用它们显然是错误的,至少根据Josh Bloch的说法 .
使用其他方法,您必须单独考虑这些问题,并了解它们已被弃用,但一般来说,当弃用的决定合理时,它倾向于倾向于错误而不是继续使用它们 .
相关问题
我觉得弃用的方法意味着;有一种可用的替代方法,它在现有方法的各个方面都比较好 . 比现有的旧方法更好地使用好的方法 . 为了向后兼容,旧方法保留为已弃用 .
你可能听说过“自嘲幽默”这个词 . 这是幽默,可以最大限度地减少你的重要性 . 不推荐使用的类或方法就是这样 . 它不再重要 . 事实上,它根本不应该被使用,因为它可能在将来不再存在 .
Try to avoid it
除了上面的所有优秀响应,我发现还有另一个原因可以删除已弃用的API调用 .
正在研究为何拒绝调用我经常发现自己在学习有关Java / API / Framework的有趣内容 . 通常有一个很好的理由说明为什么要弃用某个方法,并且了解这些原因可以获得更深入的见解 .
因此,从学习/成长的角度来看,这也是值得的
Is it wrong to use Deprecated methods or classes in Java? 它不是"wrong",仍在工作但尽可能避免它 .
假设存在与方法相关的安全漏洞,开发人员确定它是一个设计缺陷 . 因此他们可能决定弃用该方法并引入新方法 .
因此,如果您仍然使用旧方法,则会产生威胁 . 因此请注意弃用的原因并检查它是否会对您产生影响 .
what if don't change any method and run my application with warnings that I have, will it create any performance issue.
如果弃用是由性能问题引起的,那么您将遇到性能问题,否则没有理由遇到此类问题 . 再次想指出,请注意弃用的原因 .
这样没有错,但它可以为你省去一些麻烦 . 这是一个强烈建议不要使用弃用方法的示例:
http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
在性能方面应该没有问题 . 标准API旨在尊重一些向后兼容性,因此应用程序可以逐步适应新版本的Java .
您仍然可以在不改变性能的情况下使用已弃用的代码,但是弃用方法/类的重点是让用户知道现在有更好的方法使用它,并且在将来的版本中,可能会删除已弃用的代码 .
当然不是 - 因为整个Java都得到@Deprecated :-),只要Java持续,你可以随意使用它们 . 不管怎么说都不会注意到任何差异,除非它真的被破坏了 . 意义 - 必须阅读它然后再决定 .
然而,在.Net中,当声明某些内容[已过时]时,即使您之前从未使用它,也要立即阅读它 - 您有大约50%的可能性,它比替换更有效和/或更容易使用:-))
所以总的来说,现在技术保守是非常有益的,但你必须先做你的阅读家务 .
这没错,只是不推荐 . 这通常意味着在这一点上有更好的做事方式,如果你使用新的改进方式,你会做得很好 . 一些被弃用的东西真的很危险,应该完全避免 . 新方法可以产生比被弃用方式更好的性能,但情况并非总是如此 .
Yes, it is wrong.
将来的Java版本中将删除不推荐使用的方法或类,不应使用它们 . 在每种情况下,都应该有一种替代方案 . 用那个 .
在某些情况下,您必须使用已弃用的类或方法才能实现项目目标 . 在这种情况下,你真的别无选择,只能使用它 . Java的未来版本可能会破坏该代码,但如果它是一个要求,您必须接受它 . 这可能不是你第一次为了满足项目要求而做错事,而且肯定不会是最后一次 .
当您升级到新版本的Java或其他库时,有时您使用的方法或类将被弃用 . 不支持不推荐使用的方法,但不应产生意外结果 . 但这并不意味着他们不会尽快切换你的代码 .
弃用过程用于确保作者有足够的时间将代码从旧API更改为新API . 利用这个时间 . 尽快更改代码 .
在Java中它是@Deprecated,在C#中它是[已废弃] .
我想我更喜欢C#的术语 . 这只是意味着它已经过时了 . 如果你愿意,你仍然可以使用它,但可能有更好的方法 .
如果你认为Windows 3.1已经过时,就像使用Windows 3.1而不是Windows 7 . 你仍然可以使用它,但在未来的版本中可能有更好的功能,而且可能会支持未来的版本 - 过时的版本不会 .
对于Java的@Deprecated也是如此 - 您仍然可以使用该方法,但风险自负 - 将来,它可能有更好的替代方案,甚至可能不受支持 .
如果您使用的是不推荐使用的代码,那么它通常很好,只要您不必升级到更新的API - 那里可能不存在已弃用的代码 . 我建议如果你看到使用弃用代码的东西,要更新以使用更新的替代品(这通常在注释或Javadoc弃用的注释中指出) .
编辑:正如迈克尔所指出的,如果弃用的原因是由于功能的缺陷(或者因为功能甚至不存在),那么显然,不应该使用已弃用的代码 .
它当然不会产生性能问题 - deprecated 意味着将来它不再是库的一部分,所以你应该避免在新代码中使用它并更改旧代码以停止使用它,所以你不要有一天当您升级struts并发现该函数不再存在时遇到问题
一般不会,使用
deprecated
方法并不是绝对错误的,只要你有一个很好的应急计划,以避免任何问题,如果/当这些方法从图书馆你're using. With Java API itself this never happens but with just about anything else it means that it'将被删除 . 如果你特别打算不升级(虽然你很可能长远来看)你的软件's supporting libraries then there'使用deprecated
方法没问题 .号
来自the definition of deprecated:
该方法保留在API中以便在未指定的时间段内向后兼容,并且可以在将来的版本中删除 . 也就是说,不,这没有错,但有一种更好的方法,它可以更好地抵御API变化 .
很可能没有 . 它将继续像弃用之前一样工作 . API方法的 Contract 不会改变 . 如果某些内部数据结构发生变化,转而采用新的更好的方法,则可能会对性能产生影响,但这种情况不太可能发生 .
Java API中的 funniest deprecation 是imo,即FontMetrics.getMaxDecent . 弃用原因:拼写错误 .