我正在创建一个简单的Java应用程序,它将为客户存储和显示信息。
我想将id
设置为自动生成的数字,但是对此有问题,不知道我应该在get或set方法中进行设置吗?
谁能帮助我将这一价值用作?
这里是一个例子:
public class Customer{
public Person(String firstName, String lastName, String email, String address, String country){
this.id.set(Integer.parseInt(UUID.randomUUID().toString()));
this.firstName.set(firstName);
this.lastName.set(lastName);
this.email.set(email);
this.address.set(address);
this.country.set(country);
}
private final IntegerProperty id = new SimpleIntegerProperty(this,"Id",0);
private final StringProperty firstName = new SimpleStringProperty(this,"First Name","");
private final StringProperty lastName = new SimpleStringProperty(this,"Last Name","");
private final StringProperty email = new SimpleStringProperty(this,"E-mail","");
private final StringProperty address = new SimpleStringProperty(this,"Address","");
private final StringProperty country = new SimpleStringProperty(this,"Country","");
我也创建了通用的bean方法,但是就像这样简单:
public StringProperty firstNamePropery(){
return firstName;
}
public String getFirstName(){
return firstName.get();
}
public void setFirstName(String firstName){
this.firstName.set(firstName);
}
// ...其余方法... 我尝试使用此方法,但不起作用:
public IntegerProperty idProperty(){
return id;
}
public Integer getId(){
return id.get();
}
public void setId(){
this.id.set(Integer.parseInt(UUID.randomUUID().toString()));
}
感谢您在此方面为我提供帮助。
答案 0 :(得分:2)
UUID字符串看起来像这样38400000-8cf0-11bd-b23e-10b96e4ef00d
。您无法将此字符串解析为Integer。
如果要使用UUID作为客户的ID,则将属性声明为UUID或String而不是Integer。
编辑我
此外,我不需要将其存储为Integer值,字符串可以 工作,但在创建新的时却无法创建该号码 该类的实例。
要将UUID
用作字符串:
在Customer
类中,id属性必须为String
类型,而不是Integer
(或int
)类型。
要获得String
的新UUID
表示形式,请调用UUID.randomUUID().toString()
。可以将调用结果分配给客户的id
,而无需进行任何解析。
还请注意,getter
和setter
的签名必须进行相应的更改。
在当前的setId()
方法中,您将创建一个新的id
。这将覆盖使用构造函数中的调用创建客户时分配的id
。如果希望灵活分配新的ID,可以让setId
接收新的UUID
字符串,并将其作为新的id
分配给Customer
对象。
public class Customer{
public Customer(String firstName, String lastName, String email, String address, String country){
this.id.set(UUID.randomUUID().toString());
}
...
public String getId(){
return this.id;
}
public void setId(String newId){
this.id = newId;
}
}
注意: 类名称为Customer,构造函数为Person。这是错误的,两者必须具有相同的名称。您必须有一些编译器错误来告诉您这一点。我将假定类和构造函数的正确名称为Customer
/编辑我
UUID的用例是当您需要一个唯一的ID而无需检查该ID是否已与其他方(例如,数据库引擎或网络应用程序中没有中央服务器的服务器)存在时。
如果您要使用的是Integer(或Long),则没有真正的理由使用随机数,则可以为ID使用序列号。
如果javafx中的应用程序是一个独立的应用程序,并且您没有使用不同的线程并行创建客户,那么您不必担心更多。
另一方面,如果它是客户端服务器应用程序。然后,请记住客户端对服务器的并发访问。
如果在数据库中将ID创建作为一个序列委派,则数据库本身会处理并发问题或ID中的重复项。这可能是同一客户表(假设您使用的是一个)中的一个自动递增字段,一个序列或一个充当序列的表。另一方面,如果是您的一类将要一一生成id,那么您将不得不处理并发请求。您将必须确保一次只有一个线程可以递增id。
关于getter和setter,getXxx()
返回xxx
属性的值。 setXxx(123)
会将值123
设置或分配给属性xxx
;