错误编组参数

时间:2014-03-22 09:27:34

标签: java

我有这样的代码

Class Base implements java.io.Serializable, Cloneable
{
}

Class Derived extends Base
{
  private Aclass class;
}

Class AClass 未实现 java.io.Serializable

我将Base b = (Base) d;传递给远程方法。我收到了一个错误 发生了“java.rmi.MarshalException”。异常消息是“错误编组参数;嵌套异常是:     java.io.NotSerializableException:Aclass“

我理解作为参数传递给远程方法的对象必须是Serializable或 导出的远程对象。

2 个答案:

答案 0 :(得分:2)

您的Base或Derived类都没有实现私有方法所有具体的Serializable clases must implement

  

在序列化期间需要特殊处理的类   反序列化过程必须实现这些特殊方法   确切的签名:

private void writeObject(java.io.ObjectOutputStream out)
    throws IOException
private void readObject(java.io.ObjectInputStream in)
    throws IOException, ClassNotFoundException;
private void readObjectNoData()
    throws ObjectStreamException;

答案 1 :(得分:2)

您必须在要编组的所有类中实现Serializable接口。您还可以使用transient关键字跳过编组中的某些元素。标有transient的属性未在Java中序列化。