Java中同一套接字上的两个不同对象
发件人: 接收人: //不知道如何找到应将对象强制转换到的对象: 有没有办法在同一个对象流上发送两个不同的对象 -Pk使用instanceof 这两个对象都相关吗?一个继承另一个吗?如果是这样,您需要明确检查 说一个父类->BJava中同一套接字上的两个不同对象,java,sockets,networking,Java,Sockets,Networking,发件人: 接收人: //不知道如何找到应将对象强制转换到的对象: 有没有办法在同一个对象流上发送两个不同的对象 -Pk使用instanceof 这两个对象都相关吗?一个继承另一个吗?如果是这样,您需要明确检查 说一个父类->B 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.pr
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!!
}
所以b的b实例和A的b实例都是真的。所以你需要小心。首先检查子类。使用instanceof
这两个对象都相关吗?一个继承另一个吗?如果是这样,您需要明确检查
说一个父类->B
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!!
}
所以b的b实例和A的b实例都是真的。所以你需要小心。首先检查子类。socket.writeObjecttypeid+B???socket.WriteObject类型ID+B???谢谢你抽出时间。我觉得我不能恰当地提出我的问题。我正在通过对象流发送此对象。我从客户端通过套接字发送两个对象。在服务器端,我需要将其类型转换为正确的类型。我该怎么做?@Blacklabel,我知道你的问题,我回答正确,使用instanceof可以确定对象属于哪个类,因此如果instanceof A为true,则可以强制转换AOObject…它不会引发异常:试试看:我会修改代码,以防万一。谢谢你的时间。我觉得我不能恰当地提出我的问题。我正在通过对象流发送此对象。我从客户端通过套接字发送两个对象。在服务器端,我需要将其类型转换为正确的类型。我该怎么做?@Blacklabel,我知道你的问题,我回答正确,使用instanceof可以确定对象属于哪个类,因此如果instanceof A为true,则可以强制转换AOObject…它不会引发异常:试试看:我会修改代码,以防万一。
B b = new B()