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

如何访问构造函数创建的对象变量?按钮交互代码问题求助

解决方法:将对象提升为类成员变量

你遇到的核心问题是变量作用域的限制:你在continueRound1方法里创建的round1Rock是个局部变量,它的有效范围只局限在continueRound1方法内部,出了这个方法就无法被其他方法感知到,所以Attack方法自然找不到它。

要解决这个问题,只需要把round1Rock从方法内部移到类的成员位置,让它成为整个类都能访问的成员变量就行,具体步骤如下:

  1. 在类中声明成员变量
    在你的类代码里(所有方法的外部),先声明ROCK类型的变量:

    // 类的成员变量,整个类的方法都能访问
    private ROCK round1Rock;
    
  2. 修改continueRound1方法
    把原来创建对象的代码改成给这个成员变量赋值,而不是重新定义局部变量:

    private void continueRound1 (ActionEvent event){
        // 不再定义局部变量,直接给成员变量赋值
        round1Rock = new ROCK(500, 100, 100, 100, "Metamorphic");
    }
    
  3. 优化Attack方法(避免空指针异常)
    为了防止用户先点击Attack按钮、还没触发continueRound1导致的空指针问题,可以先判断对象是否已经初始化:

    private void Attack (ActionEvent event){
        if (round1Rock != null) {
            round1Rock.hp = 12;
        } else {
            // 可以添加提示逻辑,比如弹窗或控制台输出
            System.out.println("请先点击continueRound1按钮初始化战斗对象!");
        }
    }
    

这样修改后,Attack方法就能正常访问到continueRound1里创建的round1Rock对象了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:02