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

如何修改PrintDrillsNeedingBitReplacement方法过滤需换钻头的Drill?

问题修复:仅打印需要更换钻头的Drill对象

原方法核心问题

  1. 使用==比较字符串,存在空指针风险且不符合Java字符串比较规范
  2. 错误调用createDrill(fields):全局fields在文件读取完成后已被清空/覆盖,且equipmentList中已经存在创建好的Drill对象,无需重新实例化
  3. 对needsNewBit的判断仅执行但未用于控制打印逻辑,导致所有Drill都被输出
  4. 返回null不符合方法语义,应返回符合条件的设备列表

修改后的完整方法

public List<Drill> printDrillsNeedingBitReplacement() {
    List<Drill> drillsNeedingReplacement = new ArrayList<>();
    for (Equipment equipment : equipmentList) {
        // 安全判断当前设备是否为Drill
        if (DRILL.equals(equipment.getEquipmentName())) {
            // 将Equipment强制转换为Drill类型(已确认类型,转换安全)
            Drill drill = (Drill) equipment;
            // 判断是否需要更换钻头
            if (drill.getNeedsNewBit()) {
                System.out.println(drill);
                drillsNeedingReplacement.add(drill);
            }
        }
    }
    return drillsNeedingReplacement;
}

详细修改说明

  • 字符串比较优化:将equipment.getEquipmentName() == DRILL替换为DRILL.equals(equipment.getEquipmentName()),避免equipment.getEquipmentName()为null时抛出空指针异常,同时符合Java字符串比较的标准方式
  • 移除无效的createDrill调用:直接从equipmentList中取出已创建的Drill对象并强制转换,无需重新读取fields实例化新对象
  • 添加打印控制逻辑:仅当drill.getNeedsNewBit()为true时,才执行打印操作
  • 返回符合条件的列表:创建drillsNeedingReplacement列表收集所有需要更换钻头的Drill,最后返回该列表,让方法不仅能打印结果,还能返回数据供后续使用
  • 类型修正:将方法返回值从List<Equipment>改为List<Drill>,更精准反映返回数据的类型

额外建议

如果你的Equipment类是抽象类或接口,建议添加instanceof判断来更安全地识别Drill类型,替换原有的名称判断:

if (equipment instanceof Drill) {
    Drill drill = (Drill) equipment;
    if (drill.getNeedsNewBit()) {
        // 打印逻辑
    }
}

这种方式比字符串比较更可靠,避免因设备名称拼写错误导致的判断失误。

内容的提问来源于stack exchange,提问作者Jonathan S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:57:20