Je voudrais créer une copie Java.time.LocalDateTime
mais il n’a pas de méthode clone()
.
Ce que je fais est le suivant:
long epochMilli = Instant.now().toEpochMilli();
LocalDateTime createDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
LocalDateTime modificationDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
Existe-t-il un moyen plus simple de créer deux objets LocalDateTime avec exactement la même valeur date-heure?
Comme LocalDateTime
est immuable, vous pouvez simplement référencer le même objet:
LocalDateTime createDate = LocalDateTime.now();
LocalDateTime modificationDate = createDate;
Puisqu'un LocalDateTime
est immuable, selon son Javadoc il n'y a pas de vraie raison de le cloner.
Vous pouvez simplement utiliser la même instance et la transmettre sans avoir à la cloner de manière défensive et à perdre de la performance.
Comme c'est immuable, vous pouvez le faire de cette façon:
LocalDateTime copy = createDate.plusHours(0);
System.out.println(createDate.equals(copy)); // true
Retourne une copie de ce LocalDateTime avec le nombre spécifié de heures ajoutées. Cette instance est immuable et non affectée par cette méthode appel.
LocalDateTime orig = LocalDateTime.now();
LocalDateTime copy = LocalDateTime.from( orig );
edité : ce code renverra le même objet, à partir de sources LocalDateTime:
public static LocalDateTime from(TemporalAccessor temporal) {
if (temporal instanceof LocalDateTime) {
return (LocalDateTime) temporal;
}
...