gpt4 book ai didi

java - 使用 Java 可序列化保存第二个对象的数组

转载 作者:行者123 更新时间:2023-12-02 08:43:42 26 4
gpt4 key购买 nike

我有一个名为“Settings”的类,其中包含一个“UniverseOut”数组。

private static final long serialVersionUID = 2929431155275389116L;

private String projectName = "last-project";

private UniverseOut[] universeOut = new UniverseOut[unicastLimit];

当我通过命令更改设置类中的“projectName”时,它会更改它,当我保存项目并重新启动应用程序时,它将完美地读取名称,没有任何错误。

但是 UniverseOut 数组根本没有被保存,它只是说该数组来自该类型,但值/对象本身没有被保存。

public class UniverseOut implements Serializable {

/**
*
*/
private static final long serialVersionUID = -1326425548448853224L;
private static final int max_ip = 10;
private static String[] ip = new String[max_ip];

}

这是我如何将对象保存为 XML 文件的代码:

        String path = System.getProperty("user.dir");
FileOutputStream fos = new FileOutputStream(path + "\\" + projectname + ".project");
XMLEncoder xml = new XMLEncoder(fos);
xml.setExceptionListener(new ExceptionListener() {
public void exceptionThrown(Exception e) {
System.out.println("Exception! :" + e.toString());
}
});
xml.writeObject(getSettings());
xml.close();
fos.close();
fos = new FileOutputStream(path + "\\last-project.project");
xml = new XMLEncoder(fos);
xml.writeObject(getSettings());
xml.close();
fos.close();

文件正在创建,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<java version="13.0.2" class="java.beans.XMLDecoder">
<object class="preferences.Settings" id="Settings0">
<void property="projectName">
<string>lol</string>
</void>
<void property="universeOut">
<void index="0">
<object class="preferences.UniverseOut"/>
</void>
<void index="1">
<object class="preferences.UniverseOut"/>
</void>
</void>
</object>
</java>

我非常有信心这个数组应该包含一些东西,但它没有保存。

最佳答案

如果UniverseOut没有任何要序列化的非静态字段,则没有任何内容可保存,如statics are implicitly transient .

关于java - 使用 Java 可序列化保存第二个对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61225020/

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