为什么Java让我们编写更多代码?

为什么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 does

Date d = c.getTime();

d.setTime(time);

c.setTime(d);

System.out.println(c.getTime());

输出:


Fri Jun 22 16:30:06 BRT 2018

Fri Jun 22 16:30:06 BRT 2018

Fri Nov 03 04:37:44 BRT 2017

有人可以解释为什么发生这种情况,因为calendar.getTime()不会返回java.util.Date的新实例吗?


温温酱
浏览 141回答 2
2回答

慕虎7371278

Calendar.getTime()返回一个新Date实例,因此尝试更改返回的对象上的值是徒劳的,它对Calendar实例没有影响。看一下来源:public final Date getTime() {    return new Date(getTimeInMillis());}这清楚地表明,在返回的日期上进行任何更改都不会更改日历对象本身。您可以进行更改,然后致电calendar.setTime修改日期以解决此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java