java可变日期类修复
我只是想知道什么是使下面的代码不可变的正确方法
Date d = new Date();
Scheduler.scheduleTask(task1, d);
d.setTime(d.getTime() + ONE_DAY);
Scheduler.scheduleTask(task2, d);
你可以在下面搜索框中键入要查询的问题!
我只是想知道什么是使下面的代码不可变的正确方法
Date d = new Date();
Scheduler.scheduleTask(task1, d);
d.setTime(d.getTime() + ONE_DAY);
Scheduler.scheduleTask(task2, d);
# 1 楼答案
你不能让它一成不变。不变性是对象的属性。它说,一旦实例化,对象的内部状态就不会改变
不管出于什么原因,^{} 类并不是设计为不可变的。可以通过更改其包含的值来很好地说明这一点:
如果您想更改代码,使其不会变异此对象,您可以执行以下操作:
如果可以避免,请不要使用
java.util.Date
。Java8中添加了一个new Date/Time API,位于java.time
。位于其中的类是不可变的,通常是更好的选择# 2 楼答案
日期对象实现了克隆方法,所以您可以克隆日期(d)对象,而无需进行引用。在您的示例中,将如下所示: