构造函数Date(…)已被弃用。 这是什么意思? (JAVA)

我试图创build一个这样的date:

date = new Date(year-1900,mon-1,day,hrs,min,sec); 

Eclips给了我这个警告:“构造函数Date(int,int,int,int,int)已被弃用”。

对于一个构造函数是什么意思呢? 我能做什么?

不赞成字面意思就意味着不赞成 ,但更准确的翻译将退休已弃用意味着此方法仍然可用,但不应该使用它。 它将逐渐被淘汰。 有一种新的方法来做同样的事情 。 已弃用的方法标有特殊的Javadoc注释:

 /** *@deprecated Please now use newMethod() *@see newMethod() */ 

用途

  • Calendar.set(year + 1900, month, date, hrs, min)

要么

  • GregorianCalendar(year + 1900, month, date, hrs, min)

正如API文档所build议的那样 。

这意味着你不应该在新代码中使用它。 如果现在有更好的方法实现某些function,通常就是这种情况,但为了保持向后兼容性,旧方式仍然保留。

相反,您可以使用Calendar API,正如完整的消息希望向您build议的那样 – 或者(更好的IMO)您可以使用Joda Time或Java 8中的java.time包(请参阅教程 )。 这两个都是远远优于date/时间的API。 到了

当涉及到不推荐的API时,如果编译器消息没有提供替代方法,那么总是值得看看Javadoc–在这种情况下build议使用Calendar.set(...)

弃用意味着这是一个遗留的或旧的做法,应该避免。

根据这个文档http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html ,使用Calendar.set(...)

这意味着你不应该在新代码中使用它,通常是因为它是危险的,或者因为有更好的select。 编译器会在非弃用代码中使用或覆盖不推荐使用的程序元素时发出警告。

在你的情况下,你可以使用java.util.Calendar类而不是java.util.Date

顺便说一句,在Java 8和更高版本中,这些旧的类被新的java.time包 ( Tutorial )所取代。 受JSR 310定义的Joda-Time的启发,并由ThreeTen Extra项目扩展。 旧的课程仍然存在,你可以继续使用它们(同时避免他们弃用的部分),但鼓励你转换到新的课程。

因为它被弃用意味着你不应该真的使用它。 您可以使用日历从字段生成date。

不赞成意味着不鼓励使用此构造函数,并且可能在将来的Java版本中删除它。 使用日历API。

这里有一个代码片段来帮助你迁移你的代码。 两张照片都是一样的。

 import java.util.Calendar; import java.util.Date; public class Tinker { public static void main(String[] args) { int Y = 2015; // Year 2015 int M = 11; // 0..11 -- December int D = 15; // 15th int H = 16; // 4:00 PM int MN = 28; // 4:28 PM int S = 41; // 4:28:41 Date d = new Date(Y-1900,M,D,H,MN,S); System.out.println(d); Calendar c = Calendar.getInstance(); c.set(Y, M, D, H, MN, S); d = c.getTime(); System.out.println(d); } } 

输出:

 Tue Dec 15 16:28:41 CST 2015 Tue Dec 15 16:28:41 CST 2015 

一般不推荐使用这个函数。

出于某种原因,已经决定没有它,Java会更好(因为存在更好的select,您应该使用它),因此可能会从未来版本的Java中删除。 弃用基本上是一个警告,“这可能会在将来被删除,虽然我们保持一段时间,让你有机会先从你的代码中删除它”

已弃用意味着核心API和其他Java库不依赖于它,它说你有更好的方法。