从本身是目标对象的变量的对象访问 Java 对象的变量?



我已经编写了三个Java类:

  • Company
  • Department
  • Employee

每个Company对象都包含一个Department对象的数组,而这些对象又包含Employee对象的数组。

我想在EmployeesetQid()中编写一个方法,该方法将以以下格式为该员工设置一个唯一的ID:

  • compName_deptName_deptNumber_empFirstName_empSurname

示例:

  • "Microsoft_Accounting_3_John_Smith">

我的问题是:如何从Employee类的上下文中访问以下变量?

Company中的String name
  • Department中的String name
  • Department中的int number
  • 请参阅下面的代码:

    public class Company {
    private String name;
    private Department[] departments;
    public Company(String name, Department[] departments) {
    this.name = name;
    this.departments = departments;
    }
    }
    
    public class Department {
    private String name;
    private int number;
    private Employee[] members;
    public Department(String name, int number, Employee[] members) {
    this.name = name;
    this.number = number;
    this.members = members;
    }
    }
    
    public class Employee {
    private String firstname;
    private String surname;
    private String qid; //A unique employee ID
    public Employee(String firstname, String surname) {
    this.firstname = firstname;
    this.surname = surname;
    setQid();
    }
    public void setQid() {
    // How can I access the Company name, Department name, and Department number from here?
    }
    }
    

    您需要在Employee类中有一个Department的引用,在Department中也有一个Company的引用,只有这样,您与实体之间的关系才会完整。

    public class Company {
    private String name;
    private Department[] departments;
    public Company(String name, Department[] departments) {
    this.name = name;
    this.departments = departments;
    }
    //add getters and setters
    }
    public class Department {
    private String name;
    private int number;
    private Employee[] members;
    private Company company;
    public Department(String name, int number, Employee[] members) {
    this.name = name;
    this.number = number;
    this.members = members;
    }
    
    //add getters and setters
    }
    public class Employee {
    private String firstname;
    private String surname;
    private String qid; //A unique employee ID
    private Department department;
    public Employee(String firstname, String surname) {
    this.firstname = firstname;
    this.surname = surname;
    setQid();
    }
    public void setQid() {
    
    qid = department.getCompany().getName + "_" + department.getName() ....
    }
    //add getters and setters
    }
    

    最新更新