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

如何在Java中从ArrayList提取字符串?解决Minecraft插件参数带括号问题

解决Minecraft插件中ArrayList传递命令参数带括号的问题

嘿,我之前开发Minecraft插件时也踩过这个坑!你遇到的参数周围自动加括号的问题,本质是ArrayList默认的toString()方法导致的——当你直接把ArrayList拼接到字符串里时,它会自动调用这个方法,返回的格式就是[元素1, 元素2, ...],括号和逗号都是默认自带的。

问题重现(大概率你是这么写的)

比如你在传递参数后直接打印ArrayList:

// 从主类获取命令参数并转成ArrayList
ArrayList<String> argsList = new ArrayList<>(Arrays.asList(args));
// 直接拼接输出
System.out.println(player.getName() + " executed command: /mycmd " + argsList);

这时候输出就会变成:

player executed command: /mycmd [arg1, arg2]

两种简单的解决方法

1. 用String.join()快速拼接(推荐,Java 8+可用)

这是最简洁的方式,直接把List里的元素用空格分隔拼接成字符串,完全不会带括号:

// 把ArrayList转成无括号的参数字符串
String argsStr = String.join(" ", argsList);
// 输出结果
System.out.println(player.getName() + " executed command: /mycmd " + argsStr);

2. 手动循环拼接(兼容低版本Java)

如果你的插件需要兼容Java 8以下的版本,可以用StringBuilder手动拼接:

StringBuilder argsStr = new StringBuilder();
for (String arg : argsList) {
    // 不是第一个元素的话先加空格
    if (argsStr.length() > 0) {
        argsStr.append(" ");
    }
    argsStr.append(arg);
}
System.out.println(player.getName() + " executed command: /mycmd " + argsStr);

额外小建议

其实如果只是为了在类之间传递命令参数,不一定非要转成ArrayList——Bukkit的命令参数本身就是String[]数组,直接传递数组也很方便,之后同样用String.join(" ", args)就能得到干净的参数字符串。

举个完整的跨类传递示例:

// 主类(处理命令)
public class MyMainPlugin extends JavaPlugin implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("mycmd")) {
            // 把参数传递给日志类处理
            CommandLogger.logPlayerCommand(sender.getName(), args);
            return true;
        }
        return false;
    }
}

// 日志类(接收并输出参数)
public class CommandLogger {
    public static void logPlayerCommand(String playerName, String[] args) {
        String argsStr = String.join(" ", args);
        System.out.println(playerName + " executed command: /mycmd " + argsStr);
    }
}

这样输出的结果就是你想要的干净格式:

player executed command: /mycmd arg1 arg2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:13:31