Veraltete Datumsmethoden in Java?

8

Was ist wirklich gemeint, wenn Sie Java Date-Dienstprogramme verwenden und etwas veraltet ist? Bedeutet dies, dass es nicht ratsam ist zu verwenden, oder bedeutet es, dass es verboten ist?

Ich vermute, es ist eine schlechte Praxis, veraltete Methoden zu verwenden, bin mir aber nicht sicher und wollte es herausfinden.

Zum Beispiel versuche ich Code wie den folgenden zu verwenden

%Vor%

Natürlich ... Dies ist ein High-Level-Beispiel, aber in diesem Fall verwendet mein Modell den Typ Datum , und ich muss das Datum als String abziehen und ein Datum mit erstellen es.

Es funktioniert gut, wie ich es habe, aber es verwendet eine veraltete Methode.

BEARBEITEN - Ich bin zurück gegangen und habe

verwendet %Vor%



Das Datum ist im Format MM / TT / JJJ wie 07/23/2010, aber ich bekomme eine ParseException

Was könnte das sein?

    
TheJediCowboy 29.07.2010, 16:46
quelle

10 Antworten

6

Sie haben Recht, dass dies eine schlechte Praxis ist. In fast allen Fällen geben veraltete Methoden an, was zu verwenden ist, und dies ist keine Ausnahme (siehe die Javadocs ).

Sie versuchen, ein Date aus einem String zu erstellen. Aber welches Format hat der String? Wie sollte es geparst werden? Ist es ein britisches oder US-amerikanisches Datumsformat?

Der "richtige" Weg ist, eine Instanz von SimpleDateFormat , und rufen Sie die Methode parse() auf, um Ihre Textzeichenfolge zu übergeben. Dies funktioniert garantiert in Zukunft und wird jetzt robuster sein.

    
Andrzej Doyle 29.07.2010, 16:50
quelle
3

Viele Leute haben erwähnt, was "Veraltet" bedeutet, aber ich sehe keine Erklärung dafür, warum diese Methoden veraltet sind:

Sun (bevor sie Teil von Oracle waren) lehnte eine Reihe von Methoden in Date ab, um Leute dazu zu bringen, Calendar / GregorianCalendar Klassen für Datumsmanipulation statt.

    
Powerlord 29.07.2010 17:18
quelle
3

Veraltete Objekte oder Methoden bedeuten lediglich, dass Sie, wenn Sie sie im aktuellen Projekt verwenden möchten, lieber das verwenden, was empfohlen ist. Der Grund, warum sie immer noch vorhanden sind, ist für Legacy-Codes, die die veraltete Methode verwendet haben, bevor veraltet war. Ein typisches Beispiel ist StringTokenizer vs String.split() method.

Verwenden Sie für Ihr Date-Beispiel SimpleDateFormat Umwandlung von String in Datum Auf diese Weise können Sie ein Datumsformat erstellen, aus dem Ihr String-Datum analysiert werden kann, um ein Date-Objekt zu erstellen.

Für Ihre BEARBEITEN tun Sie dies

%Vor%

ParseException wird verursacht, da Sie keine Datumsformatstruktur angegeben haben, sodass SimpleDateFormat nicht wusste, wie Ihr Datum strukturiert wurde.

    
Buhake Sindi 29.07.2010 16:50
quelle
2
  

Was "veraltet" bedeutet

     

Sie haben vielleicht den Begriff gehört,   "selbstironischer Humor" oder Humor   das minimiert die Lautsprecher   Bedeutung. Eine veraltete Klasse oder   Methode ist so. Es ist nicht länger   wichtig. Es ist so unwichtig, in   Tatsache, dass Sie nicht mehr verwenden sollten   es, seit es ersetzt wurde und   kann aufhören, in der Zukunft zu existieren.

     

Java bietet eine Möglichkeit zum Ausdrücken   Missbilligung weil als Klasse   entwickelt, seine API (Anwendung   Programmierschnittstelle) zwangsläufig   Änderungen: Methoden werden umbenannt nach   Konsistenz, neue und bessere Methoden   hinzugefügt und Felder ändern sich. Aber so   Änderungen führen zu einem Problem. Du brauchst   um die alte API herumzuhalten bis   Entwickler machen den Übergang zum   Neues, aber Sie wollen das nicht   Weiter mit der Programmierung für die alte API.

     

Die Fähigkeit, eine Klasse abzulehnen,   Methode oder Member-Feld löst die   Problem. Java unterstützt zwei Mechanismen   für die Vernachlässigung: und eine Anmerkung,   (unterstützt ab J2SE 5.0) und   ein Javadoc-Tag (seit 1.1 unterstützt).   Bestehende Aufrufe der alten API werden fortgesetzt   zu arbeiten, aber die Annotation verursacht die   Compiler, um eine Warnung auszugeben, wenn es   findet Verweise auf veraltetes Programm   Elemente. Das Javadoc-Tag und   zugehörige Kommentare warnen Benutzer vor   Verwenden Sie das veraltete Element und erzählen   Sie, was stattdessen zu verwenden. Sie stattdessen verwenden.

Ссылка

    
Jonathon Faust 29.07.2010 16:49
quelle
2

Sie haben Recht. Es wird abgeraten, veraltete Methoden zu verwenden. Dies liegt daran, dass diese Methoden in einigen Situationen Probleme haben oder durch optimistischere Lösungen ersetzt wurden. Auch zukünftige Versionen unterstützen diese möglicherweise nicht.

    
YoK 29.07.2010 17:04
quelle
1

Veraltet bedeutet, dass es entfernt werden soll, weil es fehlerhaft ist oder einen anderen schlechten Grund hat. Es ist besser, SimpleDateFormat zu verwenden .parse (); , um die Zeichenfolgen zu analysieren.

    
Jarrod Roberson 29.07.2010 16:51
quelle
1

Wenn Sun (Oracle, was auch immer) eine Java-Methode als veraltet deklariert, heißt das im Allgemeinen, dass sie ihre Meinung geändert haben, sie davon abhalten, sie zu verwenden, und sie könnten sie in einer zukünftigen Version entfernen. Natürlich wird es wahrscheinlich eine lange Zeit dauern, bis es entfernt wird, denn wer weiß, wie viel existierender Code dort draußen verwendet wird, und was ist der Punkt, bestehende Programme zu brechen, nur weil die Erfinder von Java denken, dass sie jetzt eine bessere Vorstellung davon haben etwas tun?

Vermutlich hatten sie einen guten Grund, etwas abzulehnen, also sollten Sie herausfinden, WARUM sie sagen, dass eine neuere Funktion besser ist.

Im Fall veralteter Date-Methoden bedeutet dies normalerweise, dass sie vorschlagen, dass Sie jetzt die Calendar- oder SimpleDateFormat-Klassen verwenden. In Ihrem Fall wahrscheinlich letzteres.

    
Jay 29.07.2010 16:51
quelle
0

veraltet : etwas, das in der aktuellen Version von Java existiert, aber irgendwann aus zukünftigen Versionen entfernt wird.

Für Ihre Bearbeitung müssen Sie das SimpleDateFormat ordnungsgemäß initialisieren, damit es weiß, welches Format eingefügt wird. Für das Format 07/22/1978:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

    
Dean J 29.07.2010 17:15
quelle
0

Wie bereits erwähnt, waren die java.util.Date-Methoden veraltet, weil das Java-Team glaubte, sie hätten eine bessere Lösung im java.util.Calendar.

Leider erwies sich diese Klasse auch als verwirrend, mühsam und schlecht gestaltet.

Also, ja, Sie sollten veraltete Methoden aus Rücksicht auf ihre Ersetzungen vermeiden. Aber jetzt haben diese Ersetzungen (.Calendar) eine Ersetzung (java.time).

java.time

Alle alten Datum-Uhrzeit-Klassen wurden durch das Java ersetzt .time Framework in Java 8. Die neuen Klassen sind vom sehr erfolgreichen Joda-Time Framework inspiriert als Nachfolger konzipiert, konzeptionell ähnlich, aber neu gestaltet. Definiert von JSR 310 . Erweitert um das ThreeTen-Extra Projekt. Weitere Informationen finden Sie im Lernprogramm .

Verwenden Sie das Paket java.time.format für Analysieren und Erstellen von String-Darstellungen von Datum-Uhrzeit-Werten.

%Vor%

Die neuen Klassen enthalten LocalDate für die Darstellung eines Datums - Nur Wert ohne Tageszeit.

%Vor%

Wenn Sie toString für ein LocalDate aufrufen, erhalten Sie eine String-Darstellung des Datumswertes im Standard ISO 8601 Format, JJJJ-MM-TT. Um einen String in anderen Formaten zu generieren, definieren Sie einen anderen Formatierer. Oder rufen Sie die "localize" -Methoden auf, damit java.time bei der Festlegung eines bestimmten lokalisierten Formats die Schwerarbeit ausführt.

    
Basil Bourque 07.12.2015 06:45
quelle
-1

Nichts wird brechen, wenn Sie sie benutzen ... noch nicht.

Aber sie werden möglicherweise in zukünftigen Versionen entfernt.

    
PaulJWilliams 29.07.2010 16:47
quelle