我有3个类,Session
,Employee
和Employees
。Employee
类有构造函数和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());
}
}