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

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

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

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

这个调用是在服务器上的 Bank 对象上还是在我本地机器上的一个副本上调用 turn() ?

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

最佳答案

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

编辑 :由于您的 Bank 类不是 Remote ,而是 Serializable ,那么它将被复制并按值传递。

关于java - RMI:按值传递还是按引用传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3087756/

10-14 08:16