我试图实现一个规范图。共有三个类别:公司、部门、员工。
- 员工有姓名、工资、部门
- 每个部门都有一个公司、名称、员工(0..n(——我为此制作了一个LinkedList——以及一个只能在一个部门担任经理的员工类型经理
-
部门可以有部门类型的子部门——我也为此制作了一个LinkedList。以及子部门的"不同"构造函数。
-
每家公司都有自己的名字。
现在我有一个问题:
- 问题:由于一个经理只能是一个部门的经理,我在
setManager
中查看是否有任何部门有这个经理作为经理。如果是,那么我回来。这样做正确吗?我考虑了一个布尔isManager
,但在规范中没有类似的东西 - ISSUE:如果我用
removeEmployee
从部门列表中删除一名员工,我会用相同的方法将该员工的部门变量设置为null。但是,如果我试图获得员工所在部门的名称,我仍然会得到该部门,而不是空的
Department类代码的removeEmployee
就是这样的:
public void removeEmployee(Employee e) {
employees.remove(e);
e.setDepartment(null);
}
在主要方法中,我这样做是为了检查员工部门是否为空:
departmentName.employees.remove(employeeName);
System.out.println(employeeName.getDepartment().getName());
输出应为null,但我得到departmentName。他已从部门的员工列表中删除,但将该员工的部门设置为null失败。
如果你能回答我的问题并帮助我解决问题,我会很高兴。
我也可以上传图表和我的三个类,让你检查一下,但我认为你不想浪费时间。
谨致问候,Newb
似乎employees
是某种List<Employee>
,并且是public
。
这使得可以调用不调用setDepartment(null)
的departmentName.employees.remove(employeeName);
,最好将employees
声明为private
,并且只使用public removeEmployee()
方法来移除员工。
通过这种方式,您可以避免以您定义的方式以外的任何其他方式删除员工(这称为封装(。
我建议用调用remove方法替换line,因为您没有调用您的方法。而不是调用Collection方法。
它应该是这样的:
ObjectName.removeEmployee(employee);