為什么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有人可以解釋為什么發(fā)生這種情況,因為calendar.getTime()不會返回java.util.Date的新實例嗎?
2 回答

慕虎7371278
TA貢獻1802條經(jīng)驗 獲得超4個贊
Calendar.getTime()返回一個新Date實例,因此嘗試更改返回的對象上的值是徒勞的,它對Calendar實例沒有影響。
看一下來源:
public final Date getTime() {
return new Date(getTimeInMillis());
}
這清楚地表明,在返回的日期上進行任何更改都不會更改日歷對象本身。
您可以進行更改,然后致電calendar.setTime修改日期以解決此問題。
添加回答
舉報
0/150
提交
取消