java - 有没有一种方法可以在序列化期间存储静态变量的值?

标签 java serialization static

在Java中,我们如何在序列化过程中存储静态变量的值?

最佳答案

与任何其他字段相同。

static String name;

// assign
name = "Bob";

// get
String n = name;

如果要将其保存到文件中,可以使用关闭 Hook 来写入数据,但这不能保证运行。每次数据更改时我都会将数据写入文件并在启动时加载它。

private static final String NAME_FILE = "name.txt";
static String name; static {
  try {
    name = FileUtils.readFileToString(NAME_FILE );
  } catch (IOException e) {
    name = "unknown";
}

public static String getName() { return name; }
public static void setName(String name) { 
   this.name = name;
   try {
      FileUtils.writeStringToFile(NAME_FILE, name);
   } catch(IOException e) {
      log.error(e);
   }
}

您可以在序列化期间通过覆盖 wrireObject/readObject 来存储变量,但是,这是一个坏主意。您最好序列化静态值。

关于java - 有没有一种方法可以在序列化期间存储静态变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259454/

相关文章:

java micro benchmark从列表中查找平均值

JavaFX 添加线程

linux - 连续打印方式

c# - 如何在二进制序列化类中存储任意二进制数据?

c# - 元组的 Json 反序列化问题?

java - 为什么我的小程序会出现 java.security.AccessControlException : access denied (java.net.SocketPermission ...),我该如何避免?

java - 在 RESTful POST 中使用多种方法发送信息是否是一种反模式

c++ - 静态无功能线程安全吗?

c - 如何将静态结构用于静态函数? (像一个全局)

c - C中是否保留了全局静态变量的顺序?