2013-10-24 4 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 Обратите внимание, что im не уверен, как весь процесс работает на устройствах на базе Android. Вы называете эти Методы или вы убеждаете SDK Android для этого? (если так: вы уверены, что это так?) – 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

Спасибо за комментарии, дело в том, что пара не является Serializable, Strings не была проблемой. – Niko

Смежные вопросы