Два разных объекта на одном сокете в Java - PullRequest
1 голос
/ 08 ноября 2010

Отправитель:

ObjectA A = new ObjectA();
ObjectB B = new ObjectB();
//Connection is created
socket.writeObject(B);

Получатель:

// не знаю, как найти, к какому объекту я должен типизировать объект: (

Есть лиМожно ли отправить два разных объекта в один поток объектов?

-Pk

1 Ответ

4 голосов
/ 08 ноября 2010

использовать instanceof

A a = new A();
B b = new B();
C c = new C();
 //say obj is the object you read from your socket.
if(a instanceof A){
      System.out.println("a is instance of A, obj can be cast as A");
      A remoteA = (A)obj; //wont throw classcast exception!!
}
if(b instanceof B){
      System.out.println("b is instance of B, obj can be cast as B");
      B remoteB = (B)obj; //wont throw classcast exception!!
}
if(c instanceof C){
      System.out.println("c is instance of C,obj can be cast as C"); 
      C remoteC = (C)obj;  //wont throw classcast exception!!
}

Связаны ли оба объекта?одно наследует другое?Если это так, вам нужно проверить явно.

Скажите A (родительский класс) -> B

B b =  new B()

, поэтому b instanceof B и b instanceof A будут истинными.Так что вам нужно быть осторожным.Сначала проверьте детский класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...