2010-06-21 93 views
3

我無法找到明確的答案這個問題,所以我想我會問我在這裏與我自己的具體例子:RMI:按價值或參考傳遞?

我正在創建一個多人遊戲的壟斷遊戲。實際的壟斷代碼在服務器上運行,客戶端本質上是一個訪問和控制該代碼的GUI。壟斷博弈由一個叫做「銀行」的類來控制。

說我在客戶端的主()這樣做:

Bank banker = server.getBank(); //gets the bank object from server 
bank.turn(); //moves the current player 

這會反過來調用()在服務器上或在它我的本地機器上覆制銀行對象?

更新:銀行不實施遠程。它是一個可序列化的對象。

回答

7

這取決於是否BankRemote或不是一個實例。如果是這樣,那麼它將通過引用傳遞(如果全部設置正確),否則它將被序列化並按值傳遞。

編輯:由於您的Bank類不是Remote,但Serializable,那麼它會被複制和按值傳遞。

+1

還必須雖然出口。 – 2010-06-21 19:29:34

+0

@PartlyCloudy:確實是這樣 – skaffman 2010-06-21 19:35:35

+1

右,所以我需要讓銀行遠程執行,以便能夠遠程調用它的方法? – seadowg 2010-06-21 19:44:27

0

這取決於你如何編碼它。

通常表示服務器側對象的任何客戶端對象簡單地使與更新服務器側對象的遠程調用。客戶端對象只不過是用於調用服務器的傳輸協議的外觀。

如果你使用RMI,那麼它將遵循這一原則。