webentwicklung-frage-antwort-db.com.de

Der beste Weg, um Java.time.LocalDateTime zu klonen

Ich möchte eine Kopie Java.time.LocalDateTime erstellen, die jedoch keine clone()-Methode hat.

Was ich mache ist folgendes:

long epochMilli = Instant.now().toEpochMilli();

LocalDateTime createDate =  LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());

LocalDateTime modificationDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());

Gibt es eine einfachste Möglichkeit, zwei LocalDateTime-Objekte mit genau demselben Datums-/Zeitwert zu erstellen?

8
zappee

Da LocalDateTime unveränderlich ist, können Sie einfach dasselbe Objekt referenzieren:

LocalDateTime createDate = LocalDateTime.now();

LocalDateTime modificationDate = createDate;
13
Jacob G.

Da ein LocalDateTime unveränderlich ist, gibt es laut Javadoc keinen wirklichen Grund, es zu klonen.

Sie können einfach dieselbe Instanz verwenden und weitergeben, ohne sie defensiv klonen zu müssen und Leistung zu verlieren.

2
Ferrybig

Da es unveränderlich ist, können Sie es so machen:

LocalDateTime copy = createDate.plusHours(0);
System.out.println(createDate.equals(copy)); // true

plusHours doc :

Gibt eine Kopie dieser LocalDateTime mit der angegebenen Anzahl von .__ zurück. Stunden hinzugefügt. Diese Instanz ist unveränderlich und von dieser Methode nicht betroffen Anruf.

1
孙兴斌
LocalDateTime orig = LocalDateTime.now();
LocalDateTime copy = LocalDateTime.from( orig );

bearbeitet : Dieser Code gibt das gleiche Objekt aus LocalDateTime-Quellen zurück:

public static LocalDateTime from(TemporalAccessor temporal) {
       if (temporal instanceof LocalDateTime) {
          return (LocalDateTime) temporal;
       } 
       ...
1