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
相关产品推荐
相关产品推荐

