2013-10-24 61 views
0

我試圖序列配對如下:類實現Serializable接口不能的readObject

private void writeObject(java.io.ObjectOutputStream out) throws IOException { 
    if (mPair != null) { 
     String first = mPair.first; 
     String second = mPair.second; 

     mPair = null; 

     try { 
      out.writeChars(first); 
      out.writeChars("\n"); 
      out.writeChars(second); 
     } catch (Exception e) { 
     } 
    } 
} 

private void readObject(java.io.ObjectInputStream in) throws IOException, 
     ClassNotFoundException { 
    try { 
     String first = in.readLine(); 
     String second = in.readLine(); 

     mPair = new Pair<String, String>(first, second); 
    } catch (EOFException e) { 
     mPair = new Pair<String, String>("", ""); 
    } 
} 

我調試的是writeObject被稱爲正常我有我的自定義類的對象,當我的應用程序去屏幕外的3,但是當我來到回到應用程序readObject永遠不會被調用。

+0

那是ObjectInputStream已經連接FileOutputStream像這裏嗎? http://www.tutorialspoint.com/java/java_serialization.htm請注意,我不知道整個過程如何在基於android的設備上工作。你是否調用這些方法,或者你是否展示了android SDK? (如果是這樣的:你確定它是這樣嗎?) – JBA

+0

我已經以相同的方式爲Rect實現了序列化,並且它可以正常工作。 – Niko

+0

對不起,我沒有幫助,然後:( – JBA

回答

1

原來,這簡單的解決方法似乎工作:額外

public class SerializableStringPair extends Pair<String, String> implements 
    Serializable { 

    private static final long serialVersionUID = 1L; 

    public SerializableStringPair(String first, String second) { 
     super(first, second); 
    } 
} 
1

兩件事情

  • 你不需要特殊的代碼序列化或反序列化的一類,只有兩個字符串。這是標準行爲。就像你所做的那樣聲明爲implements Serializable就是這樣。

  • 您問題中的代碼包含錯誤:第二個字符串在結尾處沒有換行符。當用readLine讀取時,序列化必定會感到困惑。

+0

感謝您的意見,這裏的事情是對不是可序列化的,字符串不是問題。 – Niko

相關問題