例如,我有一个名为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时都需要保持一个对象与另一个对象之间的状态。

07-24 14:40
查看更多