RMI:通过价值或参考?

sea*_*owg 3 java remoting rmi

我很难找到这个问题的明确答案,所以我想我会在这里用自己的具体例子问:

我正在创建一个mulitplayer垄断游戏.实际的垄断代码在服务器上运行,客户端本质上是一个访问和控制此代码的GUI.垄断游戏由一个名为"银行"的类控制.

假设我在客户端的main()中执行了此操作:

Bank banker = server.getBank(); //gets the bank object from server
bank.turn(); //moves the current player
Run Code Online (Sandbox Code Playgroud)

这会调用服务器上的Bank对象上的turn()还是本地机器上的它的副本?

更新:银行没有实现远程.它是一个可序列化的对象.

ska*_*man 7

这取决于是否Bank是一个实例Remote.如果是这样,那么它将通过引用传递(如果所有设置都正确),如果不是,它将被序列化并按值传递.

编辑:既然你的Bank类不是Remote,但 Serializable,那么它会被复制和按值传递.