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

Java中如何通过循环简化大量重复相似的条件执行代码?

简化重复Java代码的方案

核心思路

别再用binding1、binding2这类单个变量,改用**集合(比如List<KeyBinding>)**存储所有绑定实例;同时把配置里的bindValue1、bindValue2也改成集合形式,靠循环批量处理重复逻辑,不用手写上百个case。


代码示例1的简化

原代码通过switch根据count创建对应数量的KeyBinding,直接用for循环就能替代:

优化后代码

// 定义集合存储所有绑定实例
List<KeyBinding> bindings = new ArrayList<>();

// 循环创建并注册绑定
for (int i = 1; i <= count; i++) {
    KeyBinding binding = KeyBindingHelper.registerKeyBinding(
        new KeyBinding(
            "key.lightningtow.hotkey_keyValue" + i,
            InputUtil.Type.KEYSYM,
            GLFW.GLFW_KEY_UNKNOWN,
            "key.category.hotkey"
        )
    );
    bindings.add(binding);
}

不管count是1还是100,这段代码都能自动适配,不用改结构。


代码示例2的简化

原代码的switch不仅重复代码多,还没加break会导致逻辑穿透(比如case1执行完会继续跑case2、case3的代码),优化时同样用循环处理:

前提调整

先修改hotkeyConfig,把bindValue1、bindValue2这类单个字段改成集合(比如List<String> bindValues),保证绑定和配置一一对应。

优化后代码

for (int i = 0; i < hotkeyConfig.bindingCount; i++) {
    KeyBinding currentBinding = bindings.get(i);
    String currentCommand = hotkeyConfig.bindValues.get(i);
    
    while (currentBinding.wasPressed()) {
        client.player.sendCommand(currentCommand);
    }
}

这段代码会循环处理前bindingCount个绑定和对应的命令,完全替代原switch的所有case逻辑。


补充说明

如果没法修改hotkeyConfig的结构(比如不能用集合存bindValue),可以用反射动态获取bindValue1这类字段,但反射性能差、可读性低,优先推荐调整配置结构用集合存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:03:24