当 ArrayList 和构造函数/获取器存储 2 个其他类时,如何从一个类添加到 ArrayList
Posted
技术标签:
【中文标题】当 ArrayList 和构造函数/获取器存储 2 个其他类时,如何从一个类添加到 ArrayList【英文标题】:How do I add to an ArrayList from one class, when the ArrayList and constructors/getters are stored 2 other classes 【发布时间】:2021-12-02 22:52:10 【问题描述】:我有 3 个课程,Session
、Employee
和 Employees
。 Employee
类具有构造函数和 getter,Employees
类具有 ArrayList
,我正在尝试将 ArrayList
添加到 Session
类中。
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()
方法时,它不显示我添加的新员工,只显示我预先写好的约翰史密斯。我怀疑addEmpNew
方法可能有问题,但我不确定。
【问题讨论】:
“当我运行它时”,你究竟是怎么做到的? 您能否发布您的viewEmployees
实现并告诉我们您如何称呼它?
也许为了让你更接近问题,你也可以尝试打印addEmpName
和addEmpEmail
的内容,这样你就知道用户输入实际上是你的变量的方式:)除此之外,在不知道你如何执行它以及 viewEmployees 的实现是什么的情况下,我们很难发现问题。此外,您可能希望自己熟悉调试代码的概念。
【参考方案1】:
您正在addEmployee
方法中创建一个Employees 实例(称为v1)。 addEmployee
方法完成后,方法内的所有变量都消失了(准备好被垃圾回收)。
如果您希望只有一个员工实例,请考虑将其设为全局变量。
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());
【讨论】:
以上是关于当 ArrayList 和构造函数/获取器存储 2 个其他类时,如何从一个类添加到 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章