gpt4 book ai didi

java - 复制 joda LocalTime 的直接方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:16 25 4
gpt4 key购买 nike

我想要一个作为副本的新实例。我可以从整数实例化,但似乎应该有更直接的方法。我也可以使用某种方法,例如 copy = original.minus(zero) 但这也是间接的。

接受 Java 对象参数的 LocalTime 构造函数(我为此使用了原始的 LocalTime)不起作用。我猜它只是不支持它。

        LocalTime start = new LocalTime(9, 0, 0);
LocalTime stop = new LocalTime(17, 0, 0);

//LocalTime time = start.minusSeconds(0); // GOOD VERSION
LocalTime time = new LocalTime(start); // THE BAD VERSION

assert time == start: "does not work";

// EXTRANEOUS STUFF TO JUSTIFY COPYING AN IMMUTABLE, FOLLOWS...
while (time.compareTo(stop) <= 0)
{
//method(time, new LocalTime(9, 0, 0), stop); // MESSY
method(time, start, stop); // NICER
time = time.plusMinutes(1);
}

我也试过 copy = new LocalTime(original.getLocalMillis()) 但我无权访问 getLocalMillis,因为它受到保护。

最佳答案

LocalTime 是不可变的,因此保留 2 个具有相同值的实例是没有意义的。它们可以共享(甚至跨线程)。突变方法,例如plus/minus 将返回一个新值,因此您可以在需要修改值时“按需”创建副本。

LocalTime start = new LocalTime(9, 0, 0);
LocalTime stop = new LocalTime(17, 0, 0);
LocalTime time = start; // Just use the reference

while (time.compareTo(stop) <= 0)
{
method(time, start, stop);
time = time.plusMinutes(1);
}

关于java - 复制 joda LocalTime 的直接方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6006582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com