Was ist der Unterschied von mit TemporalAmount oder TemporalUnit in Java 8?
Schreibe ich einige Stück code in Java 8, die mithilfe der Zeit-Arithmetik.
Ich merke, dass ich umsetzen kann in differentways. Lassen Sie uns einfach code unten. Natürlich ist es das gleiche Ergebnis, aber ich verwirrt, welche Art und Weise wird meist angewendet oder effizientesten, um arithmetische Operationen in Java 8 ?
LocalTime time = LocalTime.now();
//1st way
LocalTime plusOp = time.plus(Duration.ofMinutes(10L));
//2nd way
LocalTime plusOp2 = time.plus(10L, ChronoUnit.MINUTES);
System.out.println(plusOp);
System.out.println(plusOp2);
//3. way simply
time.plusMinutes(10L);
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Duration
können nur mit fester Länge Zeiträume, wie "Stunden", "Minuten", "Sekunden", "Tagen" (wo es geht genau 24 Stunden pro Tag). Sie können nicht "Monate" mitDuration
, da ein Monat in der Länge variiert werden.Period
- die anderen gängigenTemporalAmount
Umsetzung - steht für Jahre, Monate und Tage einzeln.Persönlich würde ich empfehlen:
plusXxx
Methode, z.B.time.plusMinutes(10)
. Das ist ungefähr so einfach zu Lesen wie es geht.Period
Duration
Hier ist ein Beispiel, wo
Period
undDuration
unterscheiden können:Ich würde nicht sorgen über die Effizienz, bis Sie wirklich brauchen, um -, an welcher Stelle Sie sollten einen benchmark, so können Sie testen verschiedene Optionen.
Wenn Sie einen Blick auf die Quelle, die
plus(long amountToAdd, TemporalUnit unit)
Methode verwendet dieplusXXX
Methoden, um Ergebnisse zu erzeugen. Es gibt also keine Argumente, die hier über die Effizienz.Stattdessen verwenden Sie je nachdem, was am besten für Ihr Szenario. Ich würde vorschlagen, dass, wenn Sie Benutzer-Eingabe zu entscheiden, ob Sie Stunden, Minuten, etc., dann die
plus()
Methode ist besser. Andernfalls wird Ihr code leichter zu Lesen, wenn SieplusXXX
.