RMI: передать по значению или по ссылке? - PullRequest
3 голосов
/ 21 июня 2010

У меня проблемы с нахождением четкого ответа на этот вопрос, поэтому я решил спросить здесь со своим конкретным примером:

Я создаю многопользовательскую монопольную игру. Фактический монопольный код выполняется на сервере, а клиент по сути является графическим интерфейсом, который осуществляет доступ к этому коду и контролирует его. Монопольная игра контролируется классом под названием «Банк».

Скажем, я сделал это в main () моего клиента:

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

Будет ли этот вызов включать () объект Bank на сервере или его копию на моем локальном компьютере?

Обновление : Банк не реализует удаленный доступ. Это сериализуемый объект.

Ответы [ 2 ]

7 голосов
/ 21 июня 2010

Это зависит от того, является ли Bank экземпляром Remote или нет. Если это так, то он будет передан по ссылке (если все настроено правильно), если нет, он будет сериализован и передан по значению.

edit : Поскольку ваш Bank класс не Remote, а равен Serializable, он будет скопирован и передан по значению.

0 голосов
/ 21 июня 2010

Это зависит от того, как вы его кодировали.

Обычно любые объекты на стороне клиента, которые представляют объекты на стороне сервера, просто делают удаленные вызовы с обновлением объектов на стороне сервера.Объекты на стороне клиента являются не чем иным, как фасадом транспортных протоколов, используемых для выполнения вызовов к серверу.

Если вы использовали RMI, то он будет следовать этому принципу.

...