動機(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的人可能會在這一點上犯糊涂。