JAVA对象的系列化问题
WHQ 2000-06-13 09:06:00 我要把对象经过系列化写入到Socket流中并发出去,当发送的是标准的类型、预定义的类及我自己定义的普通类时,均没有问题,但如果我发送自己定义的类对象的数组时,接收方出现InvalidClassException[LMyClass::Local class not compatible,这是什么缘故?例子如下:
class MyClass implements Serializable
{
public MyClass() {}
...
}
class Message implements Serializable
{
MyClass a; // 没有问题
int []i; // 没有问题
Vector ArrayOfMyClass; // 没有问题
MyClass []a; // 死活不成
public Message() {}
}
...
// 发送端
public void SendRequest(ObjectOutputStream s, Message msg)
{
s.writeObject( msg );
s.flush();
}
// 接收端
public Message GetRequest(ObjectInputStream s)
{
Message msg = (Message)s.readObject(); // 当且仅当Message中有MyClass[]域时出错
return msg;
}