如果某些东西被弃用了,我还可以使用它吗?

时间:2014-01-08 17:54:05

标签: java android deprecated

在我的Eclipse Android App中,我使用了Date类型。我被警告说这是一种弃用的类型。这是否意味着我不能使用它,或者只是认为这是不好的做法?

感谢您的帮助!!

8 个答案:

答案 0 :(得分:6)

基本上不赞成是对开发人员的警告,虽然方法/类/其他任何东西并且工作起来并不是最好的方法。可以使用更新更好的替代品,或者(有时)会有一些巧妙的破坏,这使得它不适合使用。

你仍然可以使用弃用的东西 - 但你应该先看看他们为什么先被弃用,看看新的做事方式是否适合你。

理论上,弃用的东西可以或将来被删除。这很少发生(一些Java库已经弃用了超过十年的东西),但是你应该注意这个风险。

答案 1 :(得分:5)

确定您现在可以使用它,但将来可能会将其删除。更好地寻找替代品。您也可以自己将其打包到库中,这样您就不必依赖标准库了。

答案 2 :(得分:2)

你可以(我们不会割你的手,因为我们不能;)),但这是一个不好的做法。他们总是会给你更新的替代品,你应该使用它。

将来可以删除已弃用的函数,因此您的代码可以停止工作。

答案 3 :(得分:2)

如果停止使用已弃用的方法并不会破坏向后兼容性,我宁愿转移到新的API,没有什么是强制性的,但努力是如此之小,以至于我更喜欢​​没有警告的代码

答案 4 :(得分:2)

旧功能有时会与新功能一起保留,以替换它们以实现向后兼容。这些功能通常会被标记为“已弃用”,以明确这一点。

我不同意使用已弃用的函数总是“不好的做法”。如果这是不好的做法,他们不会被弃用,本来会被删除。使用已弃用函数的现有代码通常可以单独使用,但可能需要重构才能使用较新版本的库。

重要的是要指出“弃用”并不一定意味着该功能将不复存在或在新版本中工作。它可能会在图书馆的整个生命周期内继续工作并成为图书馆的一部分。

但是,在代码中使用已弃用的函数是不好的做法。我从来没有见过一个标记为“弃用”的功能,而没有被一些更新的,通常更好的替代品取代。新代码应该使用更新的函数,该函数通常包含重要的优化,设计更改或错误修复。

答案 5 :(得分:1)

第二种:它只是被认为是不好的做法。但仍在工作(在未来的近期 - 对于FAR未来,它不再保证工作了)。

你不鼓励使用它,但你可以。

答案 6 :(得分:0)

这取决于它被弃用的原因。阅读javadocs。例如,使用它是没有意义的 Thread.destroy

/**
 * Throws {@link NoSuchMethodError}.
 *
 * @deprecated This method was originally designed to destroy this
 *     thread without any cleanup. Any monitors it held would have
 *     remained locked. However, the method was never implemented.
 *     If if were to be implemented, it would be deadlock-prone in
 *     much the manner of {@link #suspend}. If the target thread held
 *     a lock protecting a critical system resource when it was
 *     destroyed, no thread could ever access this resource again.
 *     If another thread ever attempted to lock this resource, deadlock
 *     would result. Such deadlocks typically manifest themselves as
 *     "frozen" processes. For more information, see
 *     <a href="{@docRoot}/../technotes/guides/concurrency/threadPrimitiveDeprecation.html">
 *     Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?</a>.
 * @throws NoSuchMethodError always
 */
@Deprecated
public void destroy() {
    throw new NoSuchMethodError();
}

答案 7 :(得分:0)

您现在可以使用它,但将来可能会完全丢弃它。这意味着有人必须使用你用它制作的java版本的JVM,这是不太可能的。只有当您的用户可以获得您的程序更新时,您才应该使用它。