繁体   English   中英

Java-将对象属性设置为null

[英]Java - set object attribute to null

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

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

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

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

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

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

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

亲切的问候,纽布

employees似乎是List<Employee>某种类型,并且是public

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

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

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

它看起来应该像这样:

ObjectName.removeEmployee(employee);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM