访问枚举类型以通过继承创建对象

Accessing an enum type to create an object through inheritance

我的任务是使用一个旧实验室,我们创建了一个围绕它的 GUI,非常简单。我在创建 GUI 或继承变量以创建不同的对象时没有问题,但一个对象需要一个枚举类型参数和我似乎很难将枚举类型分配给对象,即使编译器没有抱怨所以也许你们可以帮助我。

经理 class 包含枚举 class :

public enum Department {

    PAYROLL, PRODUCTION, ACCOUNTING, RESEARCH, MARKETING;

    public static Department getRandomDepartment() {
        Department[] d = Department.values();
        int size = Department.values().length;

        return d[r.nextInt(size)];
    }
};

有一个 mutator 方法 setDepartment 可以使用,但我不确定如何实例化它。

public void setDepartment(Department d) {
    department = d;
}

这是我在 GUI 中添加管理器的方法 class:

if(command.equals("Add Manager")){
        m_name = inputName.getText();
        m_num = inputNum.getText();
        m_year = Integer.parseInt(inputHire.getText());
        m_yearlyPay = Double.parseDouble(inputYearly.getText());


        if(inputDepartment.equals("Payroll") || inputDepartment.equals("payroll")){

             Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PAYROLL);
             System.out.println(temp);
        }
        if(inputDepartment.equals("Production") || inputDepartment.equals("production")){
            Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PRODUCTION);
            System.out.println(temp);
        }
        if(inputDepartment.equals("Accounting") || inputDepartment.equals("accounting")){
            Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.ACCOUNTING);
            System.out.println(temp);
        }
        if(inputDepartment.equals("Research") || inputDepartment.equals("research")){
             Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.RESEARCH);
             System.out.println(temp);
        }
        if(inputDepartment.equals("Marketing") || inputDepartment.equals("marketing")){
             Manager temp = new   Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.MARKETING);
             System.out.println(temp);
        }



    }

我的方法显然有问题,因为当我通过 GUI 输入部门时,它无法识别我添加的部门,对我的下一步应该做什么有什么想法吗?

我似乎已经解决了这个问题,而且它总是很简单,但这就是为你编码哈哈,

我忘记实例化一个字符串变量来充当 GUI 的持有者,所以当我输入部门时,字符串无处可去,所以它无法识别部门。

现在的工作代码是:

if(command.equals("Add Manager")){
        m_name = inputName.getText();
        m_num = inputNum.getText();
        m_year = Integer.parseInt(inputHire.getText());
        m_yearlyPay = Double.parseDouble(inputYearly.getText());
        department = inputDepartment.getText(); 


        if(department.equalsIgnoreCase("Payroll")){

             Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PAYROLL);
             System.out.println(temp);
        }
        if(department.equalsIgnoreCase("Production")){
            Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PRODUCTION);
            System.out.println(temp);
        }
        if(department.equalsIgnoreCase("Accounting")){
            Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.ACCOUNTING);
            System.out.println(temp);
        }
        if(department.equalsIgnoreCase("Research")){
             Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.RESEARCH);
             System.out.println(temp);
        }
        if(department.equalsIgnoreCase("Marketing")){
             Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.MARKETING);
             System.out.println(temp);
        }



    }

感谢您提供的任何意见

枚举总是提供一个 valueOf(String) 我认为可以帮助你的静态工厂。

Manager.Department.valueOf("PAYROLL") 会 return 一个 Manager.Department.PAYROLL