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

如何精简Java中多段重复Audio音频播放代码 优化为易读的通用实现

优化思路

  • 提取唯一可变的音频文件名作为通用方法入参,把重复的播放逻辑抽成公共私有方法
  • 移除无意义的char[][] gameBoard参数,你现有代码里两个方法都没有用到这个参数
  • 用Java 7+支持的多异常合并捕获简化异常处理代码
  • 保留原有对外调用入口,不需要修改其他地方的调用逻辑即可无缝切换

优化后的完整代码

import javax.sound.sampled.*;
import java.io.IOException;

public class Sound {
    // 原玩家音效对外调用入口
    public static int playerSound() {
        return playSound("Spieler x.wav");
    }

    // 原电脑音效对外调用入口
    public static int computerSound() {
        return playSound("Bot.wav");
    }

    // 通用音频播放核心方法
    private static int playSound(String audioFileName) {
        try (AudioInputStream inStream = AudioSystem.getAudioInputStream(Sound.class.getResourceAsStream(audioFileName))) {
            Clip clip = AudioSystem.getClip();
            clip.open(inStream);
            clip.start();
        } catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) {
            System.out.println(audioFileName + e.getMessage());
            e.printStackTrace();
        }
        return 0;
    }
}

优化说明

  • 后续新增其他音效只需要新增一行对外调用方法,传入对应音频文件名即可,不需要重复复制播放逻辑
  • 播放逻辑统一维护,后续要调整播放规则(比如加音量控制、播放完成回调)只需要修改playSound一处即可
  • 整体代码行数减少60%以上,可读性和可维护性大幅提升
  • 如果业务确实需要用到gameBoard参数,只需要给通用playSound方法加上该入参,原有对外方法调用时传入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:30:00