gpt4 book ai didi

java.io.NotSerializableException 即使我实现了 "Serializable"

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:32 26 4
gpt4 key购买 nike

我有一个小问题:我想在 android 上测试序列化(使用 eclipse)并找到了一个如何做的例子。我知道我需要在我想要序列化的类中实现“Serializable”,我已经做到了并且总是得到 java.io.NotSerializableException 异常。这是代码:

public void Button(View view) throws IOException, ClassNotFoundException {
ser test = new ser();
test.x = 204;
test.y = 2843;
test.speed = 12;
test.direction = 1343;
test.a = 493;
test.b = 2323;
test.c = 29489;
test.d = 394;

byte[] arr = serialize(test);

ser res = (ser) deserialize(arr);
}


public static byte[] serialize(Object o) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(o); //This is where the Exception occurs
out.close();
// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
return buf;
} catch(IOException ioe) {
Log.e("serializeObject", "error", ioe); //"ioe" says java.io.NotSerializableException exception
return null;
}

}


public static Object deserialize(byte[] b) {
try {
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b));
Object object = in.readObject();
in.close();
return object;
} catch(ClassNotFoundException cnfe) {
Log.e("deserializeObject", "class not found error", cnfe);
return null;
} catch(IOException ioe) {
Log.e("deserializeObject", "io error", ioe);
return null;
}
}

class ser implements Serializable {
float x, y, speed, direction, a, b, c, d;
}

我希望你能帮助我,我不知道我做错了什么......

编辑:我的导入是:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

最佳答案

那么,您的可序列化对象是否有任何对其他不可序列化对象的引用?如果是这样,将因此抛出 java.io.NotSerializableException。为了能够序列化,您必须让您的类实现 Serializable 并且它的所有依赖项也是 Serializable 类型(即实现 Serializable)。

异常消息应该告诉您是否存在此类不可序列化的依赖项:

它应该说类似“java.io.NotSerializableException: NonSerializableClassName”的内容

更新:根据 Bozho 的评论,我没有注意到实际上您的类没有任何不可序列化的依赖项。

关于java.io.NotSerializableException 即使我实现了 "Serializable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com