Das Designkonzept der Datums- und Uhrzeit-API von Java ist interessant

Ich habe die Datums- und Zeit-API (JSR 310 []), die bisher aus Java SE 8 stammt, nicht verwendet (da ich mit Joda-Time [] nicht besonders unzufrieden war), habe sie aber neulich nachgeschlagen. Ich fand das Designkonzept interessant, also werde ich es schreiben.

Paketübersicht

Da es viele java.time.chrono [] gibt, die Kalender wie den japanischen Kalender enthalten, scheint die Anzahl der Klassen groß zu sein.

Paket Überblick Schnittstelle Klasse Aufzählungstyp Ausnahme
java.time Haupt-API 0 15 2 1
java.time.chrono Kalender wie japanischer Kalender[^chrono] 6 11 4 0
java.time.format Analyse / Ausgabe 0 3 4 1
java.time.temporal Zeit einstellen[^temporal] 7 6 2 1
java.time.zone Zeitzone 0 4 1 1
gesamt 13 39 13 4

java.time [] Auf den ersten Blick gibt es unten viele Klassen, aber viele davon entsprechen den Wörtern, die Sie normalerweise verwenden, sodass Sie sie leicht schlucken können.

Unveränderlich

Es gibt nur eine veränderbare Klasse, java.time.format.DateTimeFormatterBuilder []. Es gibt Dinge, die nicht unveränderlich sein müssen, wie java.time.temporal.TemporalAdjuster [], aber sie sagen Ihnen freundlich (sauer Ihren Mund?), Dass Sie sie unveränderlich machen sollten.

Implementierungsanforderungen: Diese Schnittstelle beschränkt die Implementierung nicht auf Variablen, es wird jedoch dringend empfohlen, sie unveränderlich zu machen.

Namenskonvention für Methoden

Zusätzlich zu den Standardwörtern "get" und "to" werden die folgenden Wörter als Methodenpräfixe verwendet. Sie können auch "with", "plus" und "minus" in Joda-Time [] finden.

Vermeiden Sie Vererbung so weit wie möglich

Die meisten Klassen verwenden keine Vererbung (direkt von Object erben), mit Ausnahme von Ausnahmeklassen. Joda-Time Dies steht im Gegensatz zu Joda-Time.javadoc, bei dem die Vererbung stark genutzt wurde. Selbst bei Verwendung der Vererbung erbt die abstrakte Basisklasse Object direkt, und die geerbte Unterklasse ist endgültig, um eine tiefe Vererbung zu vermeiden.

Beseitigen Sie vorhandene Klassen gründlich

Java.nio.Path [], das aus Java SE 7 eingeführt wurde, kann mit den vorhandenen Dateien java.io.File [] und toFile (), toPath () ineinander konvertiert werden. Ich werde. Andererseits wird die gegenseitige Konvertierung mit der alten API nur auf der alten API-Seite implementiert.

Ich hatte das Gefühl, dass ** du (bestehende Klasse) auf den Boden von java.time ** treten darfst. Zunächst scheint es, dass keine gegenseitige Umwandlung vorbereitet wurde [^ 1], und ich fühlte sogar einen Groll gegen die alte API (ヽ ´ω`)

abschließend

Es ist auch in Effective Java geschrieben, aber ich sympathisiere damit, weil es unerwartete Fehler verursachte, indem es nicht unveränderlich gemacht wurde, und es wurde ohne Erlaubnis geerbt und geweint, weil es nicht finalisiert wurde. Es gibt viele Orte zu tun. Ich werde es in Zukunft aktiv nutzen.

[^ 1]: Datums- und Uhrzeit-API-Tipps für Japanisch (ja) --notepad

Recommended Posts

Das Designkonzept der Datums- und Uhrzeit-API von Java ist interessant
Was ist die LocalDateTime-Klasse? [Java-Anfänger] -Datum und Zeitklasse-
Überprüfen Sie das aktuelle Datum und die Uhrzeit beim Analysieren mit Javas SimpleDateFormat
Betrachten wir die Bedeutung von "Stream" und "Collect" in der Stream-API von Java.
Erläuterung der Ruby Time- und Date-Objekte
Datum (und Uhrzeit
Formatieren Sie das von created_at angegebene Datum und die Uhrzeit
Methode zur Erfassung von Datum und Uhrzeit mithilfe der DateAndTime-API
Das Datum und die Uhrzeit von java8 wurden aktualisiert
[Java] Abrufen und Anzeigen des Datums 10 Tage später mithilfe der von Java 8 hinzugefügten Zeit-API.
In Time.strptime ist% j (Gesamtdatum des Jahres)
Der Vergleich von enum ist == und gleich ist gut [Java]
Geschwindigkeitsvergleich zum Zeitpunkt der Generierung zum Zeitpunkt der Datumskonvertierung
Wenn der Monat des Datums erfasst wird, verschiebt sich der Januar
Verwendbarkeit von Datums- und Zeitklasse in jeder Sprache
Wie ist der nächste Wert des Time-Objekts korrekt?
Umgang mit Datum und Uhrzeit in Ruby. Verwenden Sie Datum und Uhrzeit richtig.
Es ist schwierig, die leere Zeichenfolge und das Datum von DBUnit zu verwenden. Korrigieren Sie es also und verwenden Sie es.
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Bei Verwendung des Konstruktors der Date-Klasse von Java wird das Datum um 1900 vorverlegt.
Stellen Sie Datum und Uhrzeit aus der Zeichenfolge mit POI ein
Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
[Java] Verwenden Sie ResolverStyle.LENIENT, um Datum und Uhrzeit gut zu handhaben
Warum die Breite des Vollbildelements 100% und die Höhe 100vh beträgt
Android - Ist die Reihenfolge der seriellen und parallelen Verarbeitung von AsyncTask garantiert? ??
Rufen Sie das aktuelle Datum und die aktuelle Uhrzeit ab, indem Sie die Zeitzone in Thymeleaf angeben
Die Beziehung zwischen strenger Java-Datumsprüfung und Sommerzeit
[RESTful API] Unterschiede und Design von Pfadparametern, Abfrageparametern und Anforderungskörpern
'% 02d' Was ist der% von% 2?
Das Biostar-Handbuch ist zu interessant
Dies und das von JDK
[MySQL] [Java] Datum und Uhrzeit empfangen
Über die Klassifizierung und das Konzept von Immutable / Mutable / Const / Variable von Java und Kotlin.
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Der Inhalt des Rückgabewerts von executeBatch unterscheidet sich zwischen 11g und 12c
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Java Unit Test Library-Bestimmen Sie, ob Arteriendatum, Kalender, lang das aktuelle Datum und die aktuelle Uhrzeit ist (geben Sie die Toleranz in Minuten an).