当数组列表和构造函数/getter存储在两个其他类中时,如何从一个类添加到数组列表?



我有3个类,Session,EmployeeEmployeesEmployee类有构造函数和getter,Employees类有ArrayList,我试图在Session类中添加ArrayList

public class Employee {
public Employee(String name, String email){
this.name = name;
this.email = email;
}
public String getName(){
return name;
}
public String getEmail(){
return email;
}
}
public class Employees {
private ArrayList<Employee> employees = new ArrayList<Employee>();
public Employees(){
employees.add(new Employee("John Smith", "johnsmith@email.com"));
}
public void addEmpNew (Employee empNew){
employees.add(empNew);
}
}
public class Session {
private void addEmployee(){
System.out.print("Name: ");
String addEmpName = In.nextLine();
System.out.print("Email: ");
String addEmpEmail = In.nextLine();
Employees v1 = new Employees();
v1.addEmpNew(new Employee(addEmpName, addEmpEmail));
}
}

但是当我运行它并放入新员工并使用viewEmployees()方法显示所有员工时,它不显示我添加的新员工,只显示我预先写入的john smith。我怀疑addEmpNew方法可能有问题,但我不确定。

您正在addEmployee方法中创建Employees的实例(称为v1)。在addEmployee方法完成后,方法中的所有变量都消失了(准备被垃圾收集)。

如果您希望只有一个Employees实例,请考虑将其设置为全局变量。

public class Session {
private final Employees v1 = new Employees();
private void addEmployee(){
System.out.print("Name: ");
String addEmpName = In.nextLine();
System.out.print("Email: ");
String addEmpEmail = In.nextLine();
v1.addEmpNew(new Employee(addEmpName, addEmpEmail));
}
private void printEmployees(){
// you will have to implement the toString method in Employees class
System.out.print("Employees: " + v1.toString());
}
}