В RMI, я могу только получить возвращаемое значение попочему Java RMI не может получить возвращаемое значение по ссылке
InetSocketAddress address = new InetSocketAddress(hostname, port);
Server server = Stub.create(Server.class, address);
int return = server.getValue();
Но я не могу получить его
public class Return {
int value;
}
InetSocketAddress address = new InetSocketAddress(hostname, port);
Server server = Stub.create(Server.class, address);
Return return = new Return();
server.getValue(return);
Я знаю аргументы будет сериализован и десериализован, но это не мой вопрос, мой вопрос: «Почему Java не может эмулировать pass-by-reference в качестве прохода in-out, как это было сделано на C с RPC?», я думаю, что это связано к среде java. внутристрановыми, что я имею в виду C с RPC, вы можете получить возвращаемое значение по
int return;
rpc.getValue(&return);
Надежда теперь мой вопрос ясен.
В какой класс вы называете эти методы getValue? RMI не требует, чтобы вы специально получали возвращаемое значение как отдельный шаг, вы просто вызываете методы на интерфейсе, которые возвращают результат так же, как вызов метода локально. Боюсь, я не понимаю ваш вопрос в его нынешнем виде. –
@ Andrzej Doyle У меня есть модифицированный код, пожалуйста, проверьте еще раз, извините за путаницу. –
«Я знаю, что аргументы будут сериализованы и десериализованы» ... * и * возвращают значения; в обоих случаях, если объект не является экспортированным удаленным объектом. Это документировано. – EJP