2016-03-23 43 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類是一個嵌套的非靜態類,但無論如何,你指出讓我指出了正確的方向。謝謝 –