webentwicklung-frage-antwort-db.com.de

Der Konstruktor Date (...) ist veraltet. Was heißt das? (Java)

Ich versuche ein Date so zu erstellen:

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

und Eclips gibt mir folgende Warnung: "Das Konstruktordatum (int, int, int, int, int) ist veraltet".

Was bedeutet es, wenn ein Konstruktor veraltet wird? Was kann ich machen?

38
snakile

Veraltet bedeutet wörtlich abgelehnt , aber eine genauere Übersetzung wäre im Ruhestand . Veraltet bedeutet, dass diese Methode noch verwendet werden kann, Sie sollten sie jedoch nicht verwenden. Es wird schrittweise auslaufen. Es gibt eine neue Methode, um dasselbe zu tun . Veraltete Methoden sind mit einem speziellen Javadoc-Kommentar gekennzeichnet:

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

Verwenden Sie :

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

oder

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

Wie vorgeschlagen durch die API-Dokumentation .

42
JuanZe

Es bedeutet, dass Sie es nicht in neuem Code verwenden sollten. Dies ist normalerweise der Fall, wenn es jetzt einen besseren Weg gibt, etwas zu erreichen, der alte Weg jedoch aus Gründen der Abwärtskompatibilität beibehalten wird.

Stattdessen können Sie könnte die Calendar-API verwenden, wie die vollständige Nachricht Ihnen hoffentlich nahe legt - oder (besser IMO) können Sie Joda Time oder das Java.time-Paket in Java 8 verwenden (siehe Tutorial ). Beide sind weit übergeordnete Datums-/Zeit-APIs. zum 

Wenn es sich um veraltete APIs handelt und die Compilernachricht nicht eine Alternative vorschlägt, lohnt es sich immer, sich den Javadoc anzusehen - was in diesem Fall die Verwendung von Calendar.set(...) vorschlägt.

16
Jon Skeet

Das bedeutet, dass Sie es normalerweise nicht in neuem Code verwenden sollten, weil es gefährlich ist oder weil es eine bessere Alternative gibt. Compiler warnen, wenn ein veraltetes Programmelement in nicht veraltetem Code verwendet oder überschrieben wird.

In Ihrem Fall können Sie Java.util.Calendar class anstelle von Java.util.Date verwenden.

Übrigens werden diese alten Klassen in Java 8 und später durch das neue Java.time-Paket ( Tutorial ) ersetzt. Inspiriert von Joda-Time , definiert durch JSR 310 und erweitert um das ThreeTen Extra - Projekt. Die alten Klassen bleiben erhalten und Sie können sie weiterhin verwenden (wobei sie ihre veralteten Teile vermeiden), Sie werden jedoch aufgefordert, zu den neuen Klassen überzugehen.

5
missingfaktor

Veraltet bedeutet, dass dies ein Erbe oder eine alte Methode ist, etwas zu tun, und es sollte vermieden werden.

Gemäß diesem Dokument http://Java.Sun.com/j2se/1.4.2/docs/api/Java/util/Date.html verwenden Sie Calendar.set(...).

4
Daniel A. White

Hier finden Sie ein Code-Snippet, das Sie bei der Migration Ihres Codes unterstützt. Beide Drucke sind gleich.

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);                      

    }

}

Die Ausgabe:

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

Da es veraltet ist, sollten Sie es nicht wirklich verwenden. Sie können den Kalender verwenden, um stattdessen ein Datum aus Feldern zu generieren.

2
Paul McKenzie

veraltet bedeutet, dass von der Verwendung dieses Konstruktors abgeraten wird und in zukünftigen Versionen von Java möglicherweise entfernt wird. Verwenden Sie die Kalender-API.

1
EJB

Veraltet bedeutet im Allgemeinen, dass Sie von der Verwendung der Funktion abgeraten sind.

Aus irgendeinem Grund wurde entschieden, dass Java ohne Java besser geeignet wäre (weil es eine bessere Alternative gibt, und Sie sollten stattdessen diese verwenden), so dass () aus einer zukünftigen Version von entfernt wird Java. Deprecation ist im Grunde eine Warnung, dass "dies wahrscheinlich in der Zukunft entfernt werden wird, obwohl wir es ein bisschen länger behalten, um Ihnen die Möglichkeit zu geben, es zuerst aus Ihrem Code zu entfernen"

0
jalf

Veraltet bedeutet Die Kern-API und andere Java-Bibliotheken sind nicht davon abhängig und es heißt, Sie haben bessere Wege.

0
Premraj