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

Java getArray方法仅返回HR员工,如何修改以返回所有转换后的员工对象

问题原因
  • 原方法返回值定义为单个Employee类型,本身就不支持返回多个员工对象
  • 循环内部仅使用单个emp变量存储转换结果,每次新的转换都会覆盖上一次的结果,循环结束后仅保留最后一次成功转换的对象
  • 大量重复的if-else分支逻辑完全一致,存在冗余代码
修改方案
  1. 把方法返回值改为List<Employee>,用于存储所有转换完成的员工对象
  2. 在循环开始前初始化一个空的结果列表,每次完成单个员工的转换后,就将实例添加到结果列表中
  3. 合并冗余的分支逻辑,简化代码
修改后代码
import java.util.ArrayList;
import java.util.List;

public static List<Employee> getArray() {
    List<Employee> employees = DataAccess.readFile("employees.txt");
    // 初始化结果列表存储所有转换后的对象
    List<Employee> convertedEmployees = new ArrayList<>();

    for (Employee originEmp : employees) {
        String title = originEmp.getTitleOfEmployment();
        Employee convertedEmp = null;

        if (title.contains("Management")) {
            convertedEmp = new Management(
                originEmp.getEmployeeId(), originEmp.getFirst_name(), originEmp.getLast_name(),
                originEmp.getDOB(), originEmp.getGender(), originEmp.getAddress(),
                title, originEmp.getDateHired(), originEmp.getHoursWorked(),
                originEmp.getRateOfPay(), originEmp.getCarAllowance(), originEmp.getMonthlyPay(),
                originEmp.getTaxRate()
            );
        } else if ("HR".equals(title) || "Sales".equals(title) || "Drivers".equals(title)
                || "Tour Operator".equals(title) || "Accounting Officer".equals(title)) {
            convertedEmp = new SupportStaff(
                originEmp.getEmployeeId(), originEmp.getFirst_name(), originEmp.getLast_name(),
                originEmp.getDOB(), originEmp.getGender(), originEmp.getAddress(),
                title, originEmp.getDateHired(), originEmp.getHoursWorked(),
                originEmp.getRateOfPay(), originEmp.getCarAllowance(), originEmp.getMonthlyPay(),
                originEmp.getTaxRate()
            );
        } else {
            System.out.println("not recognised");
        }

        // 转换成功的对象加入结果列表
        if (convertedEmp != null) {
            convertedEmployees.add(convertedEmp);
        }
    }
    return convertedEmployees;
}
补充说明

修改后的方法会返回所有成功转换的员工实例,未识别的职位会跳过不会加入结果列表,全量兼容原有业务逻辑,不需要调整其他调用方的核心处理逻辑,仅需要把接收返回值的变量类型从单个Employee改为List<Employee>即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:54:04