我很难找到这个问题的明确答案,所以我想我会用我自己的具体例子在这里问:
我正在创建一个多人垄断游戏。实际的垄断代码在服务器上运行,而客户端本质上是一个 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/