我想创建一个副本java.time.LocalDateTime
,但是它没有clone()
方法。
我要做的是以下事情:
long epochMilli = Instant.now().toEpochMilli();
LocalDateTime createDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
LocalDateTime modificationDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
是否有最简单的方法来创建两个具有完全相同的日期时间值的LocalDateTime对象?
答案 0 :(得分:17)
由于LocalDateTime
是不可变的,因此您可以简单地引用同一对象:
LocalDateTime createDate = LocalDateTime.now();
LocalDateTime modificationDate = createDate;
答案 1 :(得分:2)
由于LocalDateTime
是不可变的,因此according to its Javadoc没有真正的理由来克隆它。
您可以只使用同一个实例,然后进行传递,而不必防御性地克隆它并降低性能。
答案 2 :(得分:1)
由于它是不可变的,因此您可以这样操作:
LocalDateTime copy = createDate.plusHours(0);
System.out.println(createDate.equals(copy)); // true
返回带有指定数量的LocalDateTime的副本 小时增加。此实例是不可变的,不受此方法的影响 打电话。
答案 3 :(得分:1)
LocalDateTime orig = LocalDateTime.now();
LocalDateTime copy = LocalDateTime.from( orig );
已编辑: 此代码将从LocalDateTime源返回相同的对象:
public static LocalDateTime from(TemporalAccessor temporal) {
if (temporal instanceof LocalDateTime) {
return (LocalDateTime) temporal;
}
...