由于在Java中使用已弃用的函数,是否会出现任何问题?如果是这样,他们为什么要保留这个功能?如果你在Java中使用一个弃用的方法,这是一个坏习惯
java.sql.Date.getMonth
或getYear
或getDate
???
答案 0 :(得分:9)
一些潜在的问题是:
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的字符串到字节转换。如果没有新的界面,或者因为有人可能依赖于“破坏”的实现,这些警告/限制无法修复,因此他们不会更新方法,而是弃用它并提供替代方法。