java中为每个对象生成一个ID

我在主类中有一个数组,其中包含 Employee 类对象。我正在尝试为每个对象生成一个唯一的 ID,但它为所有对象打印相同的 ID

主要类:

public static void main(String[] args) {
    Employee employee1 = new Employee("Luke", 36);
    Employee employee2 = new Employee("Martin", 49);
    Employee employee3 = new Employee("Kevin", 21);
    Employee employee4 = new Employee("Sam", 43);
    Employee employee5 = new Employee("Nicole", 45);
    Employee employee6 = new Employee("Linta", 21);

    Employee[] allEmployees = { employee1, employee2, employee3, employee4, employee5, employee6 };

    for (int i = 0; i < allEmployees.length; i++) {
        System.out.println(allEmployees[i]);
    }

}

员工班

public class Employee {

    private String name;
    private int age;
    private static String employeeID = "0";

    Employee(String name, int age) {
        this.name = name;
        this.age = age;
        employeeID = getNextUniqueID();
    }

    public String getName() {
        return name;
    }
    
    public String setName(String name) {
        this.name =name;
    }


    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    public static String getNextUniqueID() {
        int id = Integer.parseInt(employeeID);
        ++id;
        return Integer.toString(id);

    }
    
    public String getEmployeeID() {
        return employeeID;
    }

    public String toString() {
        return  getName() + " " + getAge() + " " + getEmployeeID();
    }
}

我想要employeeID 作为字符串,我不能使用java.util.UUID;为我的项目。

回答

您需要一个与类关联的静态变量来维护唯一的 id,并需要一个实例变量来在类中保留该特定员工的 ID。

private String employeeID; // instance member
private static String uniqueID = "0"; // static class variable
public static String getNextUniqueID() {
    int id = Integer.parseInt(uniqueID);     // get the static variable
    ++id;                                    // increment it
    uniqueID = Integer.toString(id);         // update the static variable
    return uniqueID;                         // return the value to use for the employee 
}

然后在Employee构造函数中,使用静态成员:

Employee(String name, int age) {
    this.name = name;
    this.age = age;
    employeeID = Employee.getNextUniqueID();
}

更新的员工类:

public class Employee {

    private String name;
    private int age;
    private String employeeID;
    private static String uniqueID = "0";

    Employee(String name, int age) {
        this.name = name;
        this.age = age;
        employeeID = Employee.getNextUniqueID();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static String getNextUniqueID() {
        int id = Integer.parseInt(uniqueID);
        ++id;
        uniqueID = Integer.toString(id);
        return uniqueID;
    }

    public String getEmployeeID() {
        return employeeID;
    }

    public String toString() {
        return getName() + " " + getAge() + " " + getEmployeeID();
    }
}

输出:

卢克 36 1
马丁 49 2
凯文 21 3
山姆 43 4
妮可 45 5
林塔 21 6


以上是java中为每个对象生成一个ID的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>