我可以将ArrayList
中不同文本字段的文本存储起来,并将其存储到Customer
类中的Booking
属性中。现在它正在读取每个文本字段并将它们保存到不同的属性中。
private String flighttime;
private String flightlocation;
private String flightfee;
private boolean car;
private boolean insurance;
private Customer customer;
private void savebookingButtonActionPerformed(java.awt.event.ActionEvent evt) {
Booking customerbooking = new Booking();
Customer cust = null;
try {
if (custnameTF.getText().equals("")) {
throw new EmptyField("Please Insert Customer");
} else {
FileOutputStream fos = new FileOutputStream("Bookings/" + custidTF.getText() + ".txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
cust.setPersonName((custnameTF.getText()));
cust.setPersonSurname((custsurnameTF.getText()));
cust.setPersonID((custidTF.getText()));
cust.setConsultantname(consnameTF.getText());
cust.setConsultantsurname((conssurnameTF.getText()));
cust.setConsulid(considTF.getText());
customerbooking.setFlightlocation(locationCB.getSelectedItem().toString());
customerbooking.setFlighttime(timeCB.getSelectedItem().toString());
customerbooking.setFlightfee(feeCB.getSelectedItem().toString());
customerbooking.setCar(carRB.isSelected());
customerbooking.setInsurance(insuranceRB.isSelected());
oos.writeObject(customerbooking);
oos.close();
fos.close();
custnameTF.setText("");
custsurnameTF.setText("");
custidTF.setText("");
considTF.setText("");
consnameTF.setText("");
conssurnameTF.setText("");
locationCB.setSelectedItem("");
timeCB.setSelectedItem("");
feeCB.setSelectedItem("");
答案 0 :(得分:0)
简短的回答是" no"。
使用隐式顺序处理列表中的属性值以便映射到数据对象很脆弱。
但是,有时使用属性更改支持或bean来管理聚合对象的属性非常有用,尽管ArrayList
是数据结构的不良选择,而不是Map
of property-name to value或更全面的数据绑定解决方案,例如用于表示键的类型属性,用于将键映射到值的对,以及用于存储当前值和突变的数据结构。
某些地方必须将您的属性名称与数据对象类的访问者和更改者匹配。这可以使用库来完成,例如用于数据绑定或某些属性到字段映射的自定义解决方案,或者可能将您的状态存储在数据对象中的Map
中。在保持类型安全的同时,有很多方法可以做到这一点,但是许多解决方案将属性作为String
处理,将值作为Object
处理,并丢弃类型信息和类型检查,这将是一个障碍。很好地实施它。
你问题的另一个相关部分应该是变革管理,只写出变化的事情。例如,如果您的某个字段发生更改,则不需要覆盖数据对象的所有其他字段,而只需覆盖不同的字段。无论您是移动到基于属性的更新模型还是明确使用访问器和更改器,您都应该对此进行调查。如果采用基于属性的方法,您可以在聚合中处理属性或通过委托给处理程序,UI中的代码应该蒸发并传递给可以处理类型安全,变更管理,触发后续更改事件的库,和其他相关问题。