RemoteExecutable

Status
Nicht offen für weitere Antworten.

OliverH

Neues Mitglied
ich habe folgende Anforderung:

beim eintreffen eines Objektes auf dem server socket, das das Interface remoteExecutable (siehe unten) implementiert hat, soll dessen run()-methode ausgeführt werden.

das interface remoteexecutable:
Code:
import java.io.Serializable;
public interface RemoteExecutable extends Serializable{
 public void run();
}

ich möchte auf dem server socket das object o über readObject einlesen und dann den auf der server-seite die run-methode starten.

Code:
in = new ObjectInputStream(s.getInputStream()); s ist socket
synchronized(in){
o = in.readobject()
}

o.run() geht will aber nicht, weiss einer, was ich beachten muss?
 

meez

Top Contributor
Du musst noch casten:


Code:
in = new ObjectInputStream(s.getInputStream()); s ist socket
try {
  RemoteExecutable re = (RemoteExecutable) in.readobject();
} catch (ClassCastException e) {}


btw. Synchronized kannst du weglassen....da sinnlos.
 

OliverH

Neues Mitglied
danke! das funktioniert jetzt immerhin schon einmal.

jetzt noch das letzte konvertierungsproblem:

angenommen ich weiss nicht von welchen typ das eingehende objekt ist, wie erzeuge ich dann aus object das passende object (in meinem fall remoteexecutable)?

möchte sowas wie class c = o.getClass() machen und danach das object o nach remoteexecutable casten, um dann abhängig vom typ des eingehenden objektes unterschiedliche methoden aufrufen zu können.

kurz: wie kann ich ein objekt vom typ object zur laufzeit in seinen korrekten typ (den ich nicht kenn, weiss nur, dass es eine run()-methode hat)umwandeln und dann anschliessend die run()-methode ausführen.
 

meez

Top Contributor
Du kannst nicht dynamisch casten...:(
Du kannst aber sowas machen...:D
Code:
if (o instanceof BlaBla) {
   ...
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben