Java-将对象属性设置为null

时间:2018-12-14 08:02:45

标签: java null

我尝试实现规格图。有3类:公司,部门,员工。

  • 员工有姓名,工资,部门。
  • 每个部门都有一个公司,名称,雇员(0..n)-我为此创建了一个LinkedList-和一个Employee Type的Manager,只能在一个部门中担任经理。
  • 部门可以具有部门类型的子部门-我也为此创建了一个LinkedList。以及子部门的“不同”构造函数。

  • 每个公司都有一个名字。

现在我有一个问题和一个问题:

  • 问题:由于经理只能是一个部门的经理,因此我检查setManager是否有任何部门将此经理作为经理。如果是这样,那么我返回。这是正确的方法吗?我想到了布尔值isManager,但规范中没有类似的内容。
  • 问题:如果我使用removeEmployee从部门列表中删除Employee,则使用相同的方法将Employee的Department变量设置为null。但是,如果我尝试获取雇员所在部门的名称,我仍然会获得部门,而不是null。

Department类代码的removeEmployee如下所示:

public void removeEmployee(Employee e) {  
    employees.remove(e);  
    e.setDepartment(null);  
}

在main方法中,我这样做是为了检查雇员的部门是否为空:

    departmentName.employees.remove(employeeName);
    System.out.println(employeeName.getDepartment().getName());

输出应为 null ,但我得到的是 departmentName 。 他已从部门的 employees 列表中删除,但是将员工部门设置为 null 失败。 / p>

如果您能回答我的问题并帮助我解决问题,我将很高兴。

我还可以上传图表和我的三个类,以便您检查,但我不希望您浪费时间。

亲切的问候, 纽伯

2 个答案:

答案 0 :(得分:0)

看来employees是某种List<Employee>,是public

这样可以调用departmentName.employees.remove(employeeName);而不调用setDepartment(null),最好将employees声明为private,而仅使用{{1} }方法来删除雇员。

通过这种方式,您可以避免以除已定义方式之外的其他任何方式(称为封装方式)罢免员工。

答案 1 :(得分:0)

我建议将行替换为调用remove方法,因为您不会调用方法。取而代之的是调用Collection方法。

它应该看起来像这样:

ObjectName.removeEmployee(employee);