例如,我有一个名为 Member 的类,它基本上创建了一个可以登录网站的成员。每当创建此对象的实例时,需要在构造函数中初始化 5 件事,其中之一就是成员编号。该成员(member)编号必须是唯一的。我的一个想法是,每当创建 Member 对象时,就将数字加 1。
这是我当前的代码:
public Member(String newEmail, int newMoney)
{
// Intialises the email.
email = newEmail;
// Intialises the membership number.
membershipNumber = 000;
membershipNumber =+ 001;
// Intialises the login status.
loginStatus = false;
//
companions = new ArrayList<Friend>();
// Intialises the members money.
money = newMoney;
}
请忽略登录状态、同伴和金钱。
正如你所看到的,我将成员(member)编号的默认值设置为000,并在其上添加+1,但是创建的每个成员(member),现在无论我创建多少,成员(member)编号始终为1 .
我尝试了另一种方法,添加了整个其他字段,例如:
public Member(String newEmail, int newMoney)
{
// Intialises the email.
email = newEmail;
// Intialises the membership number.
membershipNumber = membershipNumberTwo;
membershipNumberTwo =+ 001;
// Intialises the login status.
loginStatus = false;
//
companions = new ArrayList<Friend>();
// Intialises the members money.
money = newMoney;
}
但成员(member)数量始终为0。
任何人都可以帮我解决这个问题:每当在构造函数中创建成员时,将成员编号添加到 +1 吗? 谢谢。
免责声明:我处于 Java 初级水平。
最佳答案
为什么要使用数字? 相反,使用 UUID 创建唯一的membershipNumber。这将保持独特性,您不必为此付出努力。
看看 UUID class与 Java 5 及更高版本捆绑在一起。
使用随机UUID,您可以使用randomUUID方法。
<小时/>编辑: 如果您计划并发创建对象并且仍然需要增量memberId,只需存储静态AtomicNumber并使用atomicNumber.incrementAndGet()来获取"new"userID
查看更多here
<小时/>至于你举的例子: 在第一个示例中 - 您在构造函数中初始化membershipNumber的值,这导致它始终为1,就像您所描述的那样。
在第二个示例中,除非 membershipNumberTwo
是静态,否则每次构造新类时都会对其进行初始化,因此每次都会将其初始化为 0。您需要在一个对象的构造与另一个对象之间保持状态。
关于java - 在 Java 中创建对象时,如何将现有数字加 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794158/