动机(Motivation)
我只针对[foo被改而指向(引用)完全不同的另一个对象]这种情况来讨论:
void aMethod(Object foo) {
foo.modifyInSomeWay(); //that's OK
foo = anotherObject; //throuble and despair will follow you
}
我之所以不喜欢这样的作法,因为它降低了代码的清晰度,而且混淆了pass by value(传值)和pass by reference(传址)这两种参数传递方式。Java只采用pass by value传递方式,我们的讨论也正是基于这一点。
在pass by value情况下,对参数的任何修改,都不会调用端造成任何影响。那些用过pass by reference的人可能会在这一点上犯糊涂。