You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java OOP初学者如何使用Position枚举设置员工岗位对应薪资

Java枚举实现岗位-薪资自动匹配方案

员工类改造

你定义的Position是嵌套在Profession类中的枚举,首先在员工类中引入该枚举作为岗位属性,在岗位的set方法中直接绑定薪资匹配规则,设置岗位时会自动完成薪资赋值。
同包下的员工类完整参考代码:

public class Employee {
    // 原有核心属性
    private String name;
    private int salary;
    private int workExperience;
    // 新增岗位属性,类型为自定义的Position枚举
    private Profession.Position position;

    // 实现带IDE提示的setProfession方法,参数直接用枚举类型
    public void setProfession(Profession.Position position) {
        this.position = position;
        // 写入你需要的岗位-薪资匹配逻辑
        if (position == Profession.Position.Developer) {
            this.salary = 5000;
        } else if (position == Profession.Position.Mechanic) {
            this.salary = 3000;
        } else if (position == Profession.Position.Director) {
            // 总监岗位薪资可根据业务自行定义规则
            this.salary = 10000;
        }
    }

    // 其余属性的get/set方法按需补充即可
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSalary() {
        return salary;
    }

    public void setWorkExperience(int workExperience) {
        this.workExperience = workExperience;
    }

    public int getWorkExperience() {
        return workExperience;
    }

    public Profession.Position getPosition() {
        return position;
    }
}

如果两个类不在同一个包,在Employee类顶部加导入语句即可省略类名前缀:

import 你的包名路径.Profession.Position;

后续属性和方法参数直接写Position类型即可。

主方法调用方式

因为setProfession方法的参数是强类型的枚举,IDE会在你输入参数时自动弹出所有可用枚举值提示,不需要手动拼写字符串,避免传值错误。
调用示例:

public class Main {
    public static void main(String[] args) {
        Employee veselin = new Employee();
        veselin.setName("Veselin");
        veselin.setWorkExperience(2);
        // 输入参数时IDE会自动提示Developer/Mechanic/Director三个选项
        veselin.setProfession(Profession.Position.Developer);
        // 验证输出:此时薪资自动设置为5000
        System.out.printf("员工%s的岗位薪资为:%d", veselin.getName(), veselin.getSalary());
    }
}

注意事项

  • 枚举值是全局唯一的常量,判断相等直接用==即可,不需要调用equals()方法
  • 薪资逻辑绑定在岗位set方法中,后续只要修改员工岗位,薪资会自动同步更新,不会出现岗位与薪资数据不匹配的问题
  • 如果后续要新增岗位类型,只需要在Position枚举中加对应值,再补充if分支的薪资规则即可,扩展成本很低

内容的提问来源于stack exchange,提问作者Veselin Zahariev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:51:21