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