Java:关键字“this”和序列化

时间:2016-03-23 11:22:39

标签: java

我有一个简单的课程,如下所示。

我想用这个类实现的所有目的是将实例序列化为字节数组,但我不断获得java.io.NotSerializableException

我的代码出了什么问题?

这个只是指向在调用构造函数而不是实际实例对象时创建的实例的指针吗?

class XXX {
  private String someStr;

  public XXX(String someStr){
    this.someStr = someStr;
  }

  public byte[] toByteArray(){
        byte[] output = null;
        try(ByteArrayOutputStream out = new ByteArrayOutputStream(); 
        ObjectOutputStream stream = new ObjectOutputStream(out)) {
            stream.writeObject(this);
            output = out.toByteArray();
        }catch(Exception e){
        }
        return output;
    }

}

XXX aX = new XXX("some string");
aX.toByteArray();

1 个答案:

答案 0 :(得分:5)

来自NotSerializableException

  

当实例需要具有Seri​​alizable接口时抛出。序列化运行时或实例的类可以抛出此异常。参数应该是类的名称。

您需要在班级中实施可序列化界面

class XXX implements Serializable {
 ...
}

请参阅此处的输出ideone.com

  

[ - 84,-19,0,5,115,114,0,6,73,100,101,111,110,101,107,-60,36,124,45,63,13,80 ,2,0,1,66,0,7,115,111,109,101,83,116,114,116,0,18,76,106,97,118,97,47,108,97,110 ,103,47,83,116,114,105,110,103,59,120,112,116,0,11,115,111,109,101,32,115,116,114,105,110,103 ]