【问题标题】:Access a Java object's variables from an object which is itself a variable of the target object?从本身是目标对象的变量的对象访问Java对象的变量?
【发布时间】:2021-09-25 23:38:39
【问题描述】:

我写了三个 Java 类:

  • Company
  • Department
  • Employee

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

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

  • compName_deptName_deptNumber_empFirstName_empSurname

例子:

  • “Microsoft_Accounting_3_John_Smith”

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

  • String nameCompany
  • String nameDepartment
  • int numberDepartment

请看我下面的代码:

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 没有Company,您可以凭空创建一个新的Employee,而无需在任何地方定义任何Company
  • @luk2302 但是Company 有一个Department 有一个Employee 对吗?没有办法访问这个方向的数据?
  • 如果您只是参考Employee,则不会。
  • 我想我将不得不重新考虑我的班级结构。谢谢你们。

标签: java class object oop


【解决方案1】:

您需要在您的 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
}

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多