I use lombok library in my spring-boot project's model classes.
@Data
@Builder
public class Employee {
private String fullname;
private long someNumber;
private boolean isManager;
}
In another class, I have a list of employees:
List<Employee> employeeList = getListOfEmployees();
I would like to create a deep copy of the employeeList, the following things are what I tried:
step 1. I create a copy constructor in Employee class:
@Data
@Builder
public class Employee {
private String fullname;
private long someNumber;
private boolean isManager;
// copy constructor
public Employee(Employee employee) {
this.fullname = employee.fullname;
this.someNumber = employee.someNumber;
this.isManager = employee.isManager;
}
}
step 2. I use Java 8 stream API to create a deep copy of the list of employees:
List<Employee> employeeListCopy = employeeList.stream().map(Employee::new).collect(Collectors.toList());
But when I build my sprint-boot project, I got error:
Error:(13, 1) java: constructor Employee in class com.my.webapp.model.Employee cannot be applied to given types;
required: com.my.webapp.Employee
found: java.lang.String,long,boolean
reason: actual and formal argument lists differ in length
Why? How to get rid of this error for my deep copy?