不推荐使用构造函数Date(...).这是什么意思?(JAVA)

sna*_*ile 45 java constructor date deprecated

我正在尝试创建这样的日期:

date = new Date(year-1900, mon-1, day, hrs, min, sec);
Run Code Online (Sandbox Code Playgroud)

和Eclips给了我这个警告:"不推荐使用构造函数Date(int,int,int,int,int)".

对于不推荐使用的构造函数意味着什么?我能做什么?

Jua*_*nZe 43

不推荐的字面意思是不赞成,但更准确的翻译将被退休.不推荐使用意味着此方法仍然可用,但您不应使用它.它将逐渐被逐步淘汰.有一种新方法可以做同样的事情.不推荐使用的方法标有一个特殊的Javadoc注释:

/**
 *@deprecated Please now use newMethod()
 *@see newMethod()
 */
Run Code Online (Sandbox Code Playgroud)

用途:

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

要么

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

正如API文档所建议的那样.

  • 我不明白为什么新的Date(2011,1,1)将被淘汰,转而支持创建Calendar对象然后进行设置. (13认同)

Jon*_*eet 17

这意味着你不应该在新代码中使用它.如果现在有更好的方法来实现某些功能,通常会出现这种情况,但保留旧方法以实现向后兼容性.

相反,您可以使用CalendarAPI,因为希望向您建议完整的消息 - 或者(更好的IMO)您可以使用Joda Timejava.timeJava 8中的包(请参阅教程).这两个都是远远优越的日期/时间API.到了

对于不推荐使用的API,如果编译器消息没有提示替代方案,那么总是值得查看Javadoc - 在本例中建议使用Calendar.set(...).


mis*_*tor 5

这意味着您不应该在新代码中使用它,因为它很危险,或者因为存在更好的替代方案.当在不推荐使用的代码中使用或覆盖已弃用的程序元素时,编译器会发出警告.

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

顺便说一句,在Java 8及更高版本中,这些旧类被新的java.time包(Tutorial)取代.灵感来自Joda-Time,由JSR 310定义,并由ThreeTen Extra项目扩展.旧类仍然存在,您可以继续使用它们(同时避免使用已弃用的部分),但我们鼓励您转换到新类.