※ 引述《chiO722.bbs@wretch.twbbs.org (chi)》之銘言:
> 請問為何將Object instance當作參數傳送時,Java定義為pass-by-value,而不是
> pass-by-reference?
作為 parameter, 請記著它所傳的並不是 object instance.
那是 object reference.
object reference 與 primitive type 一樣, 是 pass-by-value 的.
情況就如同 C/C++ 中傳 pointer 一樣, pointer 本身是 pass-by-value
的.
Alien
--
┌─────◆程式設計樂園◆─────┐ ◢ ◤ ★ 線上音樂新震撼 ★ ◢ ◤
│ CSZone.kkcity.com.tw │ ^_^ / 隨選隨播免等待 KKBOX◤ ^_^ /
└──《From:218.103.234.179 》──┘ ◤ http://www.kkbox.com.tw ◤
> -------------------------------------------------------------------------- <
發信人: chwan@kkcity.com.tw (TaiwanTouchYourHeart), 看板: java
標 題: Re: 請問pass-by-value和pass-by-reference
發信站: KKCITY (Wed Jun 30 15:21:09 2004)
轉信站: ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.ee.ttu!news.n
※ 引述《chiO722.bbs@wretch.twbbs.org (chi)》之銘言:
> 請問為何將Object instance當作參數傳送時,Java定義為pass-by-value,而不是
> pass-by-reference?
要傳遞的物件要 implement java.lang.Cloneable, 實作 clone 的方法.
而且, caller 與 callee 要協調好有關函數呼叫的合約,
看是要在 caller 使用上述 clone 的方法, 還是要在 callee 使用.
(在 callee 使用似乎可透過 dynamic proxy 的技巧來簡化程式碼的量)
--
┌─────◆KKCITY◆─────┐ ╱ ╱  ̄ ▌ ̄  ̄ ╲╱ BBS 城邦
│ bbs.kkcity.com.tw │ ╲ ╲ ╴ ▌ ▌ ▏ KK免費撥接
└──《From:61.64.116.89 》──┘ 電話:449-1999 帳號:kkcity 密碼:kkcity