例如,我有一个名为Member的类,该类基本上创建一个可以登录网站的成员。每当创建此对象的实例时,都需要在构造函数中初始化5件事,其中之一是成员资格号。该会员编号必须唯一。我的想法是,每当创建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;
}
请忽略loginStatus,同伴和金钱。
如您所见,我将会员编号的默认值设置为000,并在其上添加了+1,但是创建的每个会员(现在无论我赚多少),会员编号始终为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;
}
但是会员编号始终为0。
每当在构造函数中创建成员时,有人可以通过使成员编号增加+1来帮助我吗?
谢谢。
免责声明:Im是Java的入门级。
最佳答案
为什么要使用数字?
而是使用UUID创建唯一的MembershipNumber。这将保持唯一性,您无需为此而努力。
看一下与Java 5和更高版本捆绑在一起的UUID class。
使用随机UUID可以使用randomUUID方法。
编辑:
如果您打算并发创建对象,但仍需要增量memberId,则只需存储一个静态AtomicNumber并使用atomicNumber.incrementAndGet()即可获取“新”用户ID
查看更多here
至于您给出的示例:
在第一个示例中,您在构造函数中初始化了MembershipNumber的值,这使其始终为1,如您所描述的。
在第二个示例中,除非membershipNumberTwo
是静态的,否则它将在每次构造新类时都进行初始化,因此每次将其初始化为0时都需要保持一个对象与另一个对象之间的状态。