我正在阅读 Vaadin 教程并遇到了这段代码。但是我无法理解clone
在这种情况下的目的。谁能解释一下?
/**
* Persists or updates customer in the system. Also assigns an identifier for
* new Customer instances.
*
* @param entry
*/
public synchronized void save(Customer entry) {
if (entry == null) {
LOGGER.log(Level.SEVERE,
"Customer is null. Are you sure you have connected your form to the application as described in tutorial chapter 7?");
return;
}
if (entry.getId() == null) {
entry.setId(nextId++);
}
try {
entry = (Customer) entry.clone();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
contacts.put(entry.getId(), entry);
}
/**
* Sample data generation
*/
public void ensureTestData() {
if (findAll().isEmpty()) {
final String[] names = new String[] { "Gabrielle Patel", "Brian Robinson", "Eduardo Haugen",
"Koen Johansen", "Alejandro Macdonald", "Angel Karlsson", "Yahir Gustavsson", "Haiden Svensson",
"Emily Stewart", "Corinne Davis", "Ryann Davis", "Yurem Jackson", "Kelly Gustavsson",
"Eileen Walker", "Katelyn Martin", "Israel Carlsson", "Quinn Hansson", "Makena Smith",
"Danielle Watson", "Leland Harris", "Gunner Karlsen", "Jamar Olsson", "Lara Martin",
"Ann Andersson", "Remington Andersson", "Rene Carlsson", "Elvis Olsen", "Solomon Olsen",
"Jaydan Jackson", "Bernard Nilsen" };
Random r = new Random(0);
for (String name : names) {
String[] split = name.split(" ");
Customer c = new Customer();
c.setFirstName(split[0]);
c.setLastName(split[1]);
c.setStatus(CustomerStatus.values()[r.nextInt(CustomerStatus.values().length)]);
c.setBirthDate(LocalDate.now().minusDays(r.nextInt(365 * 100)));
save(c);
}
}
}
注意:Customer
具有以下数据成员:private Long id, private String firstName = "", private String lastName = "", private LocalDate birthDate, private CustomerStatus status, private String email = ""