[英]Auto generate id
我正在尝试自动为客户生成ID,而每次我得到的都是0。
可以确定问题出在public void regCustomer()
。
public class User {
private String firstName, gender, age;
String surename;
private int customerID;
private static int idCounter = 1000;
User next;
public User(String fN, String sn, String g, String a) {
firstName = fN;
surename = sn;
gender = g;
age = a;
//customerID = cID;
next = null;
}
public void setCustomerID() {
customerID = idCounter++;
}
public int getCustomerID() {
return customerID;
}
public String toString() {
return customerID + "\t" + surename + "\t" + firstName + "\t" + age
+ "\t" + gender;
}
}
在Window
类中
public void regCustomer() {
//int customerID = 0;//= Integer.parseInt(customerIDField.getText());
String firstName = firstNameField.getText();
String surename = surenameField.getText();
String gender = genderField.getText();
String age = ageField.getText();
if (!firstName.equals("") && !surename.equals("") && !gender.equals("")&& !age.equals("")) {
userA.regCustomer(new User(firstName, surename, gender,age));
User u = new User(firstName, surename, gender,age);
u.getCustomerID();
customerIDField.setText("");
firstNameField.setText("");
surenameField.setText("");
ageField.setText("");
genderField.setText("");
firstNameField.requestFocus();
} else
JOptionPane.showMessageDialog(this, "Alle felt må fylles inn");
}
您无需设置ID,这就是为什么它为零的原因。
您可以使用private static final AtomicInteger
生成ID序列; 只需在构造函数中从中读取:
private static AtomicInteger ID_GENERATOR = new AtomicInteger(1000);
public User(String fN, String sn, String g, String a) {
customerID = ID_GENERATOR.getAndIncrement();
//rest of constructor
}
您应该使用AtmoicInteger
因为这是线程安全的,而getAndIncrement
方法是原子的。 没有对int
此类保证。
需要回答的问题是这些项目是否以任何方式持久存在,如果发生了,那么将发生什么-使用此技术,id生成将始终从1000开始。
移动customerID = idCounter++;
到构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.