gpt4 book ai didi

java - 如何在文件中写入非序列化对象(例如形状)以便稍后读取

转载 作者:行者123 更新时间:2023-12-01 18:06:52 25 4
gpt4 key购买 nike

我有一个程序,其类类似于下面的基本示例:

public class Vertex extends Circle implements Serializable {
private int vertexID;
private final static double SIZE = 10.0;

// Constructor
public Vertex(int ID, double x, double y) {
super(x, y, SIZE, Color.BLUE);
this.vertexID = ID;
}
}

我想做的是写一个 List<Vertex> myVertices使用 ObjectOutputStream 到文件,这要求每个类都实现 Serializable界面。示例如下:

FileChooser fc = new FileChooser();
File fileChosen = fc.showOpenDialog(window);

try {
FileOutputStream fOutStream = new FileOutputStream(fileChosen);
ObjectOutputStream oOutStream = new ObjectOutputStream(fOutStream);

oOutStream.writeObject(myVertices);
oOutStream.close();
} catch {
// Exception handling here
}

上述实现的问题在于,虽然Vertex实现Serializable 、超类Circle及其父类(super class)Shape不实现Serializable 。结果是该文件包含 Vertex对象但全部 Shape详细信息丢失并默认为 0。

有没有简单的方法可以解决此类问题?我当前唯一的选择似乎是创建我自己的 Shape/Circle将位置/显示数据存储为 double ,以便它可以是 Serializable 。显然对于一门课来说这并不算太多的努力,但我还有其他一些Shape我也想保存的对象。我想,然后必须构造实际的 Shape对象来显示它们。

谢谢!

最佳答案

关于java - 如何在文件中写入非序列化对象(例如形状)以便稍后读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35744120/

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