我正在尝试使用以下序列化对:
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 :(得分: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 :(得分:1)
另外两件事
只需两个字符串就不需要特殊的代码来序列化或反序列化一个类。这是标准行为。只要声明为implements Serializable
就像你做的那样。
您问题中的代码包含错误:第二个字符串末尾没有换行符。使用readLine
阅读时,序列化必须混淆。