Das ist nicht wie es funktioniert, Sie sollten eine Remote-Schnittstelle anstelle einer Klasse verfügbar machen und dann die Schnittstelle auf Client-Ebene so manipulieren, dass der Client keine Ahnung von den Implementierungsdetails hat.
hier Sie sollten also eher so etwas wie haben:
public interface MyService extends Remote {
void doSomething() throws RemoteException;
}
Dies ist nur das, was Sie auf Client-Ebene kennen. Auf der Sever-Ebene haben Sie Ihre Implementierung Foo
, so etwas wie:
public class Foo implements MyService {
private String verySecretString;
public void doSomething(){...}
}
Antwort Update:
Wenn Sie nicht möchten, dass ein Feldwert serialisiert werden einfach das Stichwort hinzufügen transient
auf seine Erklärung als nächstes:
private transient String verySecretString;
Serialisierung im Allgemeinen nicht eine tiefe Kopie macht - haben Sie getestet, um zu sehen, was gesendet wird? –
@ DavidT.Macknet Serialisierung * tut * eine tiefe Kopie, immer, aber es gibt keine Serialisierung hier. – EJP
Interessant, und nicht der Fall in anderen Sprachen, wo nur die öffentlichen Darstellungen serialisiert sind. Ich nehme an, dass es eine Serialisierung geben muss, um das auf den Draht zu schicken, aber hey, nicht meine Sprache, wirklich. –