为什么Java让我们编写更多代码?例如:long time = 1509694664442L;Calendar c = Calendar.getInstance();System.out.println(c.getTime());c.getTime().setTime(time); // doesn't update the calendar's time!System.out.println(c.getTime());// but this doesDate d = c.getTime();d.setTime(time);c.setTime(d);System.out.println(c.getTime());输出:Fri Jun 22 16:30:06 BRT 2018Fri Jun 22 16:30:06 BRT 2018Fri Nov 03 04:37:44 BRT 2017有人可以解释为什么发生这种情况,因为calendar.getTime()不会返回java.util.Date的新实例吗?
2 回答
![?](http://img1.sycdn.imooc.com/54584eff000195a302200220-100-100.jpg)
慕虎7371278
TA贡献1802条经验 获得超4个赞
Calendar.getTime()返回一个新Date实例,因此尝试更改返回的对象上的值是徒劳的,它对Calendar实例没有影响。
看一下来源:
public final Date getTime() {
return new Date(getTimeInMillis());
}
这清楚地表明,在返回的日期上进行任何更改都不会更改日历对象本身。
您可以进行更改,然后致电calendar.setTime修改日期以解决此问题。
添加回答
举报
0/150
提交
取消