2016-03-23 39 views
3

我有一个简单的类,如下所示。Java:关键字“this”和序列化

我想用这个类实现的所有东西都是将实例序列化为一个字节数组,但我总是得到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(); 

回答

5

NotSerializableException

当需要一个实例为具有序列化接口抛出。序列化运行时或实例的类可能会引发此异常。争论应该是类的名字。

你需要实现可串行化接口在你的课堂上。

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,76,0,7,115,111,109,101,83,116,114,116,第106,106,97,118,97,47,108,97,110,103,47,83,116,114,105,110,103,59,120,112,116, 101,32,115,116,114,105,110,103]

+0

获取相同的错误... –

+0

我应该工作。看到https://ideone.com/h4uRWL –

+0

我应该提到XXX类是一个嵌套的非静态类,但无论如何,你指出让我指出了正确的方向。谢谢 –