Java RMI:按值传递还是按引用传递?

Java RMI:按值传递还是按引用传递?,java,remoting,rmi,Java,Remoting,Rmi,我很难找到这个问题的明确答案,所以我想在这里用我自己的具体例子提问: 我正在创建一个多玩家垄断游戏。实际的独占代码在服务器上运行,客户机本质上是一个GUI,它访问和控制该代码。垄断游戏由一个叫做“银行”的类控制 假设我是在我客户的主要()中这样做的: Bank banker = server.getBank(); //gets the bank object from server bank.turn(); //moves the current player 这个调用是在服务器上的Bank对

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

我正在创建一个多玩家垄断游戏。实际的独占代码在服务器上运行,客户机本质上是一个GUI,它访问和控制该代码。垄断游戏由一个叫做“银行”的类控制

假设我是在我客户的主要()中这样做的:

Bank banker = server.getBank(); //gets the bank object from server
bank.turn(); //moves the current player
这个调用是在服务器上的Bank对象上还是在本地计算机上的Bank对象的副本上调用()呢


更新:银行未实施远程控制。它是一个可序列化对象。

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


编辑:由于您的
银行
类不是
远程
,而是
可序列化的
,因此它将被复制并按值传递。

这取决于您的编码方式

通常,表示服务器端对象的任何客户端对象都只需通过更新服务器端对象进行远程调用。客户端对象只不过是用于调用服务器的传输协议上的一个门面


如果您使用RMI,则它将遵循此原则。

但它也必须导出。对吗?所以我需要让Bank实现远程,以便能够远程调用其上的方法?@Oetzi:它需要是
远程
,需要符合
远程
要求的约定,并且需要导出。这都是在“传递对象”一节中描述的,我真的需要与某人面对面地谈论这一点。我看到的每个示例都只说明了客户端在服务器端操作一个类的方法,因为我有许多不同的类(属性、播放器等)。这是否意味着我使用的每个类都必须实现远程?对不起,如果这是愚蠢的,我只是有点难以理解这些。@Skaffman。啊,我现在拿到了。我的困惑似乎来自于这样一个事实:我的旧Java教科书使用存根和骨架教授RMI,而现在的做法有所不同。非常感谢(穆:)