首页 > 解决方案 > 使用构造函数创建唯一 ID

问题描述

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

class user {

    static int uid = 0;
    String name;

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

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

标签: javaconstructor

解决方案


您的代码有几个问题:

  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
}

推荐阅读