java - 如何保证序列化世界中的 Java 实例控制(无枚举)?

标签 java

在 Java 1.5 之前的世界中(因此没有 enum)并且我的对象被序列化,我如何才能实现适当的实例控制?我说的是这样的类,据我所知,我不确定 instance0 和 instance1 是否始终是唯一的实例。

import java.io.Serializable;

public final class Thing implements Serializable {

    private static final long serialVersionUID = 1L;

    public static final Thing instance0 = new Thing();
    public static final Thing instance1 = new Thing();

    private Thing(){};
}

最佳答案

你真的应该看看Effective Java .关于 Singleton 的章节在一定程度上解决了这个问题,并且有一章关于 Typesafe Enum 模式,这无疑对 enum 的实现方式产生了影响。

简短的回答是您必须实现 readResolve

关于java - 如何保证序列化世界中的 Java 实例控制(无枚举)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892304/

相关文章:

java - 如何将图像放在按钮字段上并添加事件

Java正则表达式提取两个字符串之间的特殊字符串

java - 从数据库转换为 Java 变量时使用的命名约定

Java - 如何在 SQLite 中插入值?

java - 如何避免使用 toString().getBytes ("UTF-8") 来避免 OOM 错误?有没有更好的方法从 StringWriter 转换为 byte[]?

java - 在 Camel-Spring-Boot 设置中配置来自外部 JAR 的 Camel 路由

java - Podio API - 更新联系人引用

java - 如何仅在未渲染另一个组件时才渲染一个组件?

java - 使用键绑定(bind)

java - 使用 twilio 沙箱在 whatsapp 上发送多条媒体消息