其实这里不仅仅想说的是浅复制和深复制的问题,更多的是想说关于重构(重新组织代码)的问题,我们一般不采纳对函数参数进行重新赋值的行为,所以,我们应该尽量选择深复制,不要去修改参数的值,不然的话,会使得代码逻辑不清晰。
class Param {
public static void main(String[] args) {
Date d1 = new Date("1 Apr 98");
nextDateUpdate(d1);
System.out.println("d1 after nextDay: " + d1);
Date d2 = new Date("1 Apr 98");
nextDateReplace(d2);
System.out.println("d2 after nextDay: " + d2);
}
// 浅复制
private static void nextDateUpdate(Date arg) {
arg.setDate(arg.Date() + 1 );
System.out.println("arg in nextDay: " + arg);
}
// 深复制
private static void nextDateReplace(Date arg) {
arg.setDate(arg.getYear(), arg.getMonth(), arg.getDay() + 1);
System.out.println("arg in nextDay: " + arg);
}
}