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

Java运行时如何修改变量名 如何实现对象名与字符串或整数拼接

Java动态变量名相关问题解答

核心限制说明

Java是静态编译型语言,变量名仅存在于源码开发、编译阶段,编译生成的字节码中不存在源码里的变量名,只会保留内存地址引用。因此无法在运行时修改已有的变量名,也无法通过字符串拼接动态生成新的变量名,你代码中Button btn0+i = new Button(...)的写法是语法错误,无法通过编译。

需求替代实现方案

你想要批量创建按钮、给每个按钮做唯一标识的需求,可以通过以下两种成熟方案实现,不需要依赖动态变量名:

  • 方案1:用数组存储批量生成的对象
    你已经定义了Button[] digitButtons数组,直接将创建的按钮存入数组对应下标即可,不需要单独声明btn0、btn1这类独立变量,后续需要调用对应按钮时直接通过digitButtons[下标]取值即可。
  • 方案2:用控件ID做标识
    你代码中已经调用了getId()方法读取控件标识,只需要在创建按钮时给每个按钮设置唯一ID即可满足识别需求。

以下是修正后的可运行代码:

Button[] digitButtons = new Button[10];
for(int i = 0; i < 10; i++) {
    final int buttonInd = i;
    digitButtons[i] = new Button(Integer.toString(i));
    // 给按钮设置唯一ID,格式为btn+数字
    digitButtons[i].setId("btn" + i);
    digitButtons[i].setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            System.out.println("Button pressed " + ((Button) e.getSource()).getText());
            System.out.println("button clicked " + ((Control)e.getSource()).getId());
            lastClickedIndex = buttonInd;
        }
    });
}

如果确实需要通过自定义字符串名称来灵活存取按钮对象,可以使用HashMap实现类似动态变量名的存取效果:

// 键为自定义的按钮名称,值为按钮对象
Map<String, Button> buttonMap = new HashMap<>();
for(int i = 0; i < 10; i++) {
    Button button = new Button(Integer.toString(i));
    button.setId("btn" + i);
    buttonMap.put("btn" + i, button);
}
// 后续可以直接通过字符串名称获取对应按钮
Button btn5 = buttonMap.get("btn5");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:54:03