動機(jī)(Motivation)
我只針對[foo被改而指向(引用)完全不同的另一個(gè)對象]這種情況來討論:
void aMethod(Object foo) {
foo.modifyInSomeWay(); //that's OK
foo = anotherObject; //throuble and despair will follow you
}
我之所以不喜歡這樣的作法,因?yàn)樗档土舜a的清晰度,而且混淆了pass by value(傳值)和pass by reference(傳址)這兩種參數(shù)傳遞方式。Java只采用pass by value傳遞方式,我們的討論也正是基于這一點(diǎn)。
在pass by value情況下,對參數(shù)的任何修改,都不會調(diào)用端造成任何影響。那些用過pass by reference的人可能會在這一點(diǎn)上犯糊涂。
我只針對[foo被改而指向(引用)完全不同的另一個(gè)對象]這種情況來討論:
void aMethod(Object foo) {
foo.modifyInSomeWay(); //that's OK
foo = anotherObject; //throuble and despair will follow you
}
我之所以不喜歡這樣的作法,因?yàn)樗档土舜a的清晰度,而且混淆了pass by value(傳值)和pass by reference(傳址)這兩種參數(shù)傳遞方式。Java只采用pass by value傳遞方式,我們的討論也正是基于這一點(diǎn)。
在pass by value情況下,對參數(shù)的任何修改,都不會調(diào)用端造成任何影響。那些用過pass by reference的人可能會在這一點(diǎn)上犯糊涂。