我有一个程序,其类类似于下面的基本示例:
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;
}
}
我希望能够做的是写一个列表
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
及其超类 Shape
并未实现 Serializable
。结果是文件包含
顶点
对象,但所有形状
细节都将丢失,默认为 0。
这类问题有简单的解决方案吗?我目前唯一的选择似乎是创建我自己的
对象。我想,我必须要么构造实际的形状
/Circle
,将位置/显示数据存储为双精度,这样它就可以<code>串行化ShapeShape
对象来显示它们。
谢谢你!
如果有人想查看 Shape
的实际代码,特别是 Circle
对象,这是我根据公认的答案实现的。还包括一个列表示例
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.writeInt(vertexID);
oos.writeObject(myVertices);
oos.writeDouble(super.getCenterX());
oos.writeDouble(super.getCenterY());
}
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
// Read in same order as write
this.vertexID = ois.readInt();
this.myVertices = (List<Vertex>) ois.readObject();
super.setCenterX(ois.readDouble());
super.setCenterY(ois.readDouble());
// Default Circle properties
super.setRadius(SIZE); // Default
super.setFill(Color.BLUE); // Default
}
您需要创建一个 writeObject/readObject 方法来保存所需的其他状态。
序列化-readObject写对象覆盖
readObject/writeObject 在序列化中的使用
为什么 readObject 和 writeObject 是私有的,为什么我要显式写入瞬态变量?
Java 自定义序列化
Java:writeObject vs writeExternal 的效率
问题内容: 我将多个对象写入文件,然后在代码的另一部分中检索它们。我的代码没有错误,但是无法正常工作。您能帮我发现我的代码有什么问题吗?我从不同的网站阅读了不同的代码,但是没有一个对我有用! 这是将对象写入文件的代码:MyClassList是一个数组列表,其中包含我的类的对象(必须将其写入文件)。 我向输出流的构造函数添加了“ true”,因为我想将每个对象都添加到文件的末尾。那是对的吗? 这是我
我必须将对象(播放器)保存到文件列表中,然后当我再次打开程序时,我必须与播放器一起读取该文件并将其添加到列表中。但是我读这个文件有问题吗?我做错了什么? ///////////////////////////// }
我们目前正在开发云数据流上的概念验证Apache Beam管道。我们将一些文件(没有文本;自定义二进制格式)放入Google Cloud Buckets,并希望将这些文件作为byte[]读取,并在流中反序列化它们。但是,我们找不到能够读取非文本文件的波束源。唯一的想法是扩展类,但我们认为应该有一个更简单的解决方案,因为这听起来是一个非常简单的任务。 谢谢你们的帮助。
问题内容: 我试图用来从属性文件中检索。文档中对此方法的描述为: 从此资源包或其父级中获取给定键的字符串数组。 但是,我尝试将值作为多个单独的键/值对存储在属性文件中: 并以逗号分隔列表: 但是使用都无法检索到这些。 如何在属性文件中表示一组键/值对,以便可以使用检索它们? 问题答案: 一个对象可以容纳 s ,而不仅仅是s。往往会忘记这一点,因为它们绝大多数用于加载.properties文件,因此
如何在JavaFX中组合形状(例如圆形)以拖动它们?示例代码基于 Oracle 教程。每个圆圈都可以移动。我想在拖动蓝色圆圈时单独移动它。我想在单击并拖动绿色圆圈时移动绿色和蓝色圆圈,并在单击并拖动红色圆圈时移动所有三个圆圈。有什么想法吗?
在我的php脚本中,我有一个简单的username/email exists条件,但是我想把这个错误(如果存在的话)放在html的某个地方,这样我就可以设置它的样式并将它放置在我的表单上。Echo只是把它放在左上角。我该怎么做?设置变量似乎不是最佳解决方案。