gpt4 book ai didi

java - 独一无二的元素

转载 作者:行者123 更新时间:2023-12-01 17:28:11 24 4
gpt4 key购买 nike

我想为某些属性创建一个独一无二的对象:

import java.util.HashMap;

public class SourceLanguage {
private final String name;
private static HashMap<String,SourceLanguage> existing;

private SourceLanguage(String name){
this.name = name;
}

public String getName(){
return name;
}

public static SourceLanguage get(String name){
if(existing==null){
existing = new HashMap<>();
SourceLanguage sl = new SourceLanguage(name);
existing.put(name.toLowerCase(),sl);
return sl;
}
SourceLanguage check = existing.get(name);
if(check==null){
SourceLanguage sl = new SourceLanguage(name);
existing.put(name.toLowerCase(),sl);
return sl;
}else {
return check;
}
}
}

我想使用此类的对象作为另一个映射中的键。

我觉得这有点过分了。有没有更简单的方法来实现目标?

最佳答案

您可以考虑使用Registry pattern 。这样,SourceLanguage 对象的行为就可以与强制执行其唯一性的行为分开。如果彼此独立,它们也可能变得更加复杂。注册表可以处理注释中描述的内存泄漏,而不会扰乱您的 SourceLanguage 类。

SourceLanguage和Registry类放在同一个包中,但使SourceLanguage类package-visibile(或给它一个protected构造函数),然后外部组件将无法直接实例化 SourceLanguage,而必须通过注册表。

关于java - 独一无二的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13407110/

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