我有一个方法,我传递了几个日历对象的类。在该方法中,我将几天/几个月添加到日历对象。Java日历通过引用传递?
但是,在返回方法时,传递的Calendar对象不再保存执行'处理'的方法的更新日期。
我会想到与日历对象,更改将保持不管id改变状态?下面的代码:
Calendar aDate = Calendar.getInstance();
aDate.set(2016, 2, 30);
Calendar start = Calendar.getInstance();
myClass.setStartAndEnd(aDate, start);
然后setStartAndEnd方法...
void setStartAndEnd(Calendar aDate, Calendar start) {
if (aDate.get(Calendar.DAY_OF_WEEK) == 1) {
start = aDate;
} else {
start.add(Calendar.DAY_OF_WEEK, 5);
}
}
在这种情况下,我希望“开始”与添加到3月30日5天至结束,但在返回方法它最终还是因为3月30日
引用传递值 – Andrew
@AndrewTobilko一个'Calendar'(不幸)是可变的,因此在'start'上调用'.add()'确实会修改底层对象。但是否则,是的,Java只是通过价值。 – fge
@fge,OP只改变了局部变量('start = aDate;'),而不是传入的对象 – Andrew