我想创建这样一个Date
:
date = new Date(year-1900, mon-1, day, hrs, min, sec);
和Eclipse给了我这样的警告:“构造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)
。这意味着你不应该在新的代码通常使用它是因为它是危险的,或者因为存在更好的选择。当使用或在非弃用代码重写弃用程序元件的编译器发出警告。
你的情况,你可以使用java.util.Calendar
类,而不是java.util.Date
。
顺便说一句,在Java 8和后,这些老班是由新java.time package(Tutorial)所取代。通过Joda-Time启发,通过JSR 310定义,并通过ThreeTen Extra项目扩展。老班留在原地,你可以继续使用他们(同时避免它们过时部件),但我们鼓励过渡到新的类。
已过时意味着它是一个传统的或旧的方式做一些事情,应该避免。
根据这一文件http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html,使用Calendar.set(...)
。
下面是一段代码,以帮助迁移您的代码。同时打印是相同的。
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的未来版本中删除。使用日历API。
一般不推荐使用意味着你是从使用功能气馁。
出于某种原因或其他,它已决定Java的会更好没有它(因为存在更好的选择,你应该使用代替),所以它可能会从Java的未来版本中删除。弃用基本上是一个警告,“这将可能在未来获得删除,虽然我们保持它周围的时间长一点,给你一个机会,首先从你的代码中删除”
已过时意味着核心API和其他Java库不依赖于它,它说你有更好的办法(S)。