如果在Java中使用弃用的方法/函数会出现什么问题?

时间:2010-08-08 19:09:32

标签: java deprecated

由于在Java中使用已弃用的函数,是否会出现任何问题?如果是这样,他们为什么要保留这个功能?如果你在Java中使用一个弃用的方法,这是一个坏习惯 java.sql.Date.getMonthgetYeargetDate ???

6 个答案:

答案 0 :(得分:9)

一些潜在的问题是:

  • 方法可能不复存在(实际情况从未如此,但根据官方定义,已弃用的方法可能会从未来的Java中删除)
  • 由于弃用方法中存在致命缺陷(例如System.runFinalizersOnExit及其邪恶的双胞胎Runtime.runFinalizersOnExit),可能会出现严重的编程错误。
  • 由于固有的不安全弃用方法(例如Thread.stop
  • ,可能会发生数据损坏

参考

相关问题

答案 1 :(得分:3)

实际上还没有删除任何方法,因此现有代码将继续运行。 Sun一直非常注重向后兼容性。

主要的好处是远离代码,由于某种原因,这些代码被发现在次级代价下,并且通常在运行时库的其他地方有替换代码。因此,使用它们是一个坏习惯,每当编译器标记弃用时,您应该注意并使用推荐的替换。目标是消除编译器警告通常是一个好主意。

您可以在Javadocs中看到已弃用的内容列表。 Java 5列表位于http://download.oracle.com/javase/1.5.0/docs/api/deprecated-list.html

答案 2 :(得分:2)

保留不推荐使用的方法,以便为先前版本的Java编写的代码仍然起作用。如果他们刚刚删除了代码,那么当您将Java更新到新版本时,先前正在运行的代码将停止工作。

除了导致该方法被弃用的问题之外,使用已弃用的函数不会引起任何问题。但是,最好找出替换已弃用方法的内容。已弃用的功能将替换为新类中可能包含的新功能。许多已弃用的日期功能已移至日历。检查Javadoc以查看推荐的替代品。

答案 3 :(得分:1)

代码可能在将来破裂......

不推荐使用的函数警告此函数将消失。

现在寻找解决问题的其他方法,或者你会 将来代码中断。

答案 4 :(得分:1)

在将来的版本中,可能会删除已弃用的类或方法。 Sun有习惯贬低东西,从来没有真正删除它,我认为这不太好,因为它使得使用弃用方法似乎没问题。尽管如此,您仍然不应该使用弃用的方法(而且应该始终可以使用)。这尤其适用于外部库,这些外部库通常不像Sun那样害怕删除已弃用的代码。

答案 5 :(得分:1)

正如其他人所指出的那样,Sun从未从JDK中删除任何已弃用的方法,但对于第三方库中已弃用的方法则不然。那些确实消失了(例如Lucene项目在这里有一个相当“流畅的”API,用主要版本进行大规模清理)。

即使在JDK中,不推荐使用的方法意味着“现在有更好的方法”,您应该更新代码以使用新版本。

很少有被弃用的方法无法正常工作,但更换通常会更可靠,或者在更多情况下,或者以更一般的方式工作。这里的好例子是你提到的Date函数(不推荐使用,因为它们不适用于不同的locales / calendars),或者只能使用7位ASCII的字符串到字节转换。如果没有新的界面,或者因为有人可能依赖于“破坏”的实现,这些警告/限制无法修复,因此他们不会更新方法,而是弃用它并提供替代方法。