использовать 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
будут истинными.Так что вам нужно быть осторожным.Сначала проверьте детский класс.