1
我試圖用Object輸出流編寫一個文件到一個文件中,並且每當我運行它的代碼時,它都會產生一個NotSerializableException異常。請告訴我,如果你看到我做錯了什麼。NotSerializableException objectIO
保存方法:
public static void saveEntity(PhysicsBody b, File f) throws IOException {
if (!f.exists())
f.createNewFile();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
oos.writeObject(b);
oos.close();
}
錯誤輸出:
java.io.NotSerializableException: PhysicsBody
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at PhysicsUtil.saveEntity(PhysicsUtil.java:15)
at applet.run(applet.java:51)
at java.lang.Thread.run(Unknown Source)
PhysicsBody類:
import java.awt.geom.Point2D;
import java.util.ArrayList;
public class PhysicsBody {
protected float centerX;
protected float centerY;
protected float minX, minY, maxX, maxY;
protected float mass;
protected ArrayList<Vertex> vertices = new ArrayList<Vertex>();
protected ArrayList<Edge> edges = new ArrayList<Edge>();
public PhysicsBody(float mass) {
this.mass = mass;
}
public void addVertex(Vertex v) {
if (v != null)
vertices.add(v);
}
public void addEdge(Edge e) {
if (e != null)
edges.add(e);
}
public MinMax projectToAxis(Point2D.Float axis) {
float dotP = axis.x * vertices.get(0).x + axis.y * vertices.get(0).y;
MinMax data = new MinMax(dotP, dotP);
for (int i = 0; i < vertices.size(); i++) {
dotP = axis.x * vertices.get(i).x + axis.y * vertices.get(i).y;
data.min = Math.min(data.min, dotP);
data.max = Math.max(data.max, dotP);
}
return data;
}
public void calculateCenter() {
centerX = centerY = 0;
minX = 10000.0f;
minY = 10000.0f;
maxX = -10000.0f;
maxY = -10000.0f;
for (int i = 0; i < vertices.size(); i++) {
centerX += vertices.get(i).x;
centerY += vertices.get(i).y;
minX = Math.min(minX, vertices.get(i).x);
minY = Math.min(minY, vertices.get(i).y);
maxX = Math.max(maxX, vertices.get(i).x);
maxY = Math.max(maxY, vertices.get(i).y);
}
centerX /= vertices.size();
centerY /= vertices.size();
}
}
我使它實現了Serializable,但我仍然得到一個類似的錯誤 – 2011-06-08 23:58:40
@stas:你是否意識到錯誤返回的類名是不可序列化的,而它應該是?是?你現在可以自己解決這些「類似的錯誤」嗎? – BalusC 2011-06-09 00:05:37