gpt4 book ai didi

java - 如何防止对象的多个实例在 Java 中具有相同的属性

转载 作者:行者123 更新时间:2023-11-29 06:26:42 25 4
gpt4 key购买 nike

下面是我的代码片段

Account acc1 = new Account ("123", "James", "Savings");
Account acc2 = new Account ("234", "James", "Checking");
acc1.setNickName("James Account");
acc2.setNickName("James Account");


//Nick Name Method
private String nickName;

public void setNickName (String name)
{
nickname = name;

}

我的问题是如何防止 acc2 对象的 NickName 值与 acc1 的值相同?

我想确保在 setNickName 方法中有一种机制可以防止两个对象实例相同。

最佳答案

您可以在Account 类中创建静态Set 对象,每次添加nickname 时,您都检查是否已经存在。如果没有,则设置该值。如果它不存在,那么你可以有自己的逻辑(我抛出了一个IllegalArgumentException)

class Account {

private static Set<String> nickNameSet = new HashSet<>();

public void setNickName(String nickName) {
if(nickNameSet.add(nickName))
{
this.nickName = nickName;
}
else {
throw new IllegalArgumentException("Nick Name already exists");
}
}
}

正如@Makoto 所指出的,在 Account 类中定义 Set 对象将导致所有帐户对象都可以访问其他帐户的昵称。如果您担心数据隐藏,我们应该创建一个新类,比如 AccountManager 并将识别重复的 nickName 的逻辑委托(delegate)给它。

关于java - 如何防止对象的多个实例在 Java 中具有相同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155462/

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