我试图保存我的序列化对象时,活动调用onDestroy()但当我尝试使用ObjectOutputStream写入我的对象时抛出java.io.NotSerializableExeption。保存我没有序列化对象的序列化类像Rect
你能帮我吗。谢谢
我试图保存我的序列化对象时,活动调用onDestroy()但当我尝试使用ObjectOutputStream写入我的对象时抛出java.io.NotSerializableExeption。保存我没有序列化对象的序列化类像Rect
你能帮我吗。谢谢
您需要确保该类实现java.io.Serializable
接口。另外考虑使用Bundles,并将您的数据保存在onSaveInstanceState
中。有关数据存储的更多信息,请参阅this dev guide topic。
我遇到同样的问题,使这个类来帮助序列:
public class SerializableRect implements Serializable {
private static final long serialVersionUID = 1L;
private Rect mRect;
public SerializableRect(Rect rect) {
mRect = rect;
}
public Rect getRect() {
return mRect;
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
int left = mRect.left;
int top = mRect.top;
int right = mRect.right;
int bottom = mRect.bottom;
out.writeInt(left);
out.writeInt(top);
out.writeInt(right);
out.writeInt(bottom);
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
int left = in.readInt();
int top = in.readInt();
int right = in.readInt();
int bottom = in.readInt();
mRect = new Rect(left, top, right, bottom);
}
}
如果你的对象地图中包含一个不可序列化对象的VM寻找一个无参数的构造函数,使用默认值的对象并继续前进。它不能引发这个异常。底线是,每一个对象在你的对象图引用必须:
你没有提供足够的细节让我走得更远,但是我无法为你写出它吗?通常,您可以从不可序列化的类派生出来,或者将它们包装并提供必要的功能。只要每个成员符合我列出的条件,就不会抛出异常。
yes我在我的GameField类上实现了java.io.Serializable,我的GameField类包含fileds Rect bouds,当我保存GameField类时抛出java.io.NotSerializableExeption,我认为它是界限。我的问题是如何存储我的界限?谢谢 –
好吧,在这种情况下,您需要手动序列化对象。您可以覆盖'writeObject'和'readObject'方法来执行此操作。 –
请给我一些提示如何去做。谢谢 –