我有一个名为 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/