gpt4 book ai didi

java - 可变日期类修复

转载 作者:行者123 更新时间:2023-12-02 13:15:33 26 4
gpt4 key购买 nike

我只是想知道使下面的代码不可变的正确方法是什么。

Date d = new Date();
Scheduler.scheduleTask(task1, d);
d.setTime(d.getTime() + ONE_DAY);
Scheduler.scheduleTask(task2, d);

最佳答案

你不能让它变得不可变。不变性是对象的一个​​属性。它表示,一旦实例化,对象的内部状态就不会改变。

java.util.Date无论出于何种原因,类都不是被设计为不可变的。更改其包含的值的能力很好地说明了这一点:

d.setTime(d.getTime() + ONE_DAY);

如果您想更改代码以使其不会改变此对象,您可以执行以下操作:

Date firstDate = new Date();
Scheduler.scheduleTask(task1, firstDate);
Date secondDate = new Date(firstDate.getTime() + ONE_DAY);
Scheduler.scheduleTask(task2, secondDate);
<小时/>

如果可以避免,请不要使用java.util.Date。有一个new Date/Time API在 Java 8 中添加,位于 java.time 中。其中的类是不可变的,通常是更好的选择。

关于java - 可变日期类修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780276/

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