使用构造函数创建唯一的ID

时间:2018-10-02 17:52:50

标签: java constructor

我想创建一个名称和唯一ID号随每个用户的创建而递增的对象。

class user {

    static int uid = 0;
    String name;

    public user (String name){
       User.uid = uid++;
       this.name = name;
    }
}

在主要方法中创建用户对象并打印其ID时,它们都返回0。我认为对此有一个简单的解决方法,但似乎无法在其他地方在线找到它。

2 个答案:

答案 0 :(得分:2)

您的代码有几个问题:

  1. 用户没有任何ID。您所拥有的只是一个静态ID,因此由所有用户共享
  2. 您要递增静态ID,然后立即将其先前的值分配给该ID。
  3. 您不遵守Java命名约定。

代码应为

class User {

    private static int uid = 0;

    private String name;
    private int id;

    public User(String name) {
       uid++;
       this.id = uid;
       this.name = name;
    }

    // getters
}

或者,如果您希望ID以0开头:

class User {

    private static int uid = 0;

    private String name;
    private int id;

    public User(String name) {
       this.id = uid++;
       this.name = name;
    }

    // getters
}

答案 1 :(得分:0)

User.uid = uid++;中,您首先将0分配给User.uid,然后增加uid。

您应该这样更改:User.uid = ++uid;