java - 创建新实例时,如何检查它是否重复,如果是,则返回原始指针?

标签 java

我有一个名为 Token 的类,它使用 new Token(String) 实例化。由于 Token 类在实例化时生成一个随机数,因此每个 String 输入只有一个 Token 实例非常重要。为了保证这种行为,我想在尝试创建重复实例时返回原始实例指针。

这可能吗?

最佳答案

创建 TokenFactory具有 Map<String, Token> 的类数据成员。在您的 create 方法中,如果找到 String 则传回该值作为 Map 中的键。如果没有,请将其添加到 Map返回之前。

如果您想阻止用户创建 Token实例本身,您必须尝试将构造函数设为私有(private)并将 TokenFactory静态内部类,例如 Builder模式。

public class TokenFactory {
    private static final Map<String, Token> INSTANCES = new ConcurrentHashMap<String, Token>();

    public Token create(String key) {
        if (INSTANCES.containsKey(key) { 
            return INSTANCES.get(key);
        } else {
            Token t = new Token(key);
            INSTANCES.put(key, t);
            return t;
        }
    }
}

关于java - 创建新实例时,如何检查它是否重复,如果是,则返回原始指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14991588/

相关文章:

java - Easymock:捕获的顺序重要吗?

java - 是否保证在同一 bean 中使用 @PostConstruct 注释的方法先于使用 @Scheduled 的方法执行?

java - Count 程序执行次数

java - spEL(Spring 表达式语言)有哪些有效用途?

java - Java JSF 的 Facebook 点赞按钮?

Java:使用变量引用类变量

Java 条件困惑? (初学者)

java - 如何更改JMeter的字体? (现在上部 i 与下部 L 相同)

java - Spring Boot 下拉菜单

java - Java 的 TWAIN/WIA 示例