构造函数日期(...)已被弃用。这是什么意思? (JAVA)

问题描述 投票:40回答:9

我想创建这样一个Date

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

和Eclipse给了我这样的警告:“构造Date(int, int, int, int, int)已过时”。

这是什么意思为即将过时的构造函数,我该怎么办?

java date constructor deprecated
9个回答
42
投票

过时的字面意思是不赞成的,但更准确的翻译将全部退役。已过时意味着这种方法仍然是可用的,但你不应该使用它。这将逐渐被淘汰。还有就是做同样的事情的新方法。不赞成的方法都打上了特殊的Javadoc评论:

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

采用:

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

要么

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

作为建议by the API documentation


17
投票

这意味着你不应该在新的代码中使用它。这是通常的情况下,如果现在有实现的东西更好的办法,但老办法保持向后兼容。

相反,你可以使用Calendar API,作为完整的邮件希望建议你 - 或(更好IMO),你可以使用Joda Timejava.time包在Java中8人(见tutorial)。这两个都远远优于日期/时间的API。到

当涉及到淘汰的API,如果编译器消息没有提出一种替代,它总是值得看的Javadoc - 在这种情况下使用Calendar.set(...)建议。


5
投票

这意味着你不应该在新的代码通常使用它是因为它是危险的,或者因为存在更好的选择。当使用或在非弃用代码重写弃用程序元件的编译器发出警告。

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

顺便说一句,在Java 8和后,这些老班是由新java.time packageTutorial)所取代。通过Joda-Time启发,通过JSR 310定义,并通过ThreeTen Extra项目扩展。老班留在原地,你可以继续使用他们(同时避免它们过时部件),但我们鼓励过渡到新的类。


4
投票

已过时意味着它是一个传统的或旧的方式做一些事情,应该避免。

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


3
投票

下面是一段代码,以帮助迁移您的代码。同时打印是相同的。

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

2
投票

因为它已经过时意味着你不应该真正使用它。你可以用日历来产生,而不是从一个领域日期。


1
投票

已过时意味着这个构造函数的用法是气馁,它可以用Java的未来版本中删除。使用日历API。


0
投票

一般不推荐使用意味着你是从使用功能气馁。

出于某种原因或其他,它已决定Java的会更好没有它(因为存在更好的选择,你应该使用代替),所以它可能会从Java的未来版本中删除。弃用基本上是一个警告,“这将可能在未来获得删除,虽然我们保持它周围的时间长一点,给你一个机会,首先从你的代码中删除”


0
投票

已过时意味着核心API和其他Java库不依赖于它,它说你有更好的办法(S)。

© www.soinside.com 2019 - 2024. All rights reserved.