如何访问构造函数创建的对象变量?按钮交互代码问题求助
解决方法:将对象提升为类成员变量
你遇到的核心问题是变量作用域的限制:你在continueRound1方法里创建的round1Rock是个局部变量,它的有效范围只局限在continueRound1方法内部,出了这个方法就无法被其他方法感知到,所以Attack方法自然找不到它。
要解决这个问题,只需要把round1Rock从方法内部移到类的成员位置,让它成为整个类都能访问的成员变量就行,具体步骤如下:
在类中声明成员变量
在你的类代码里(所有方法的外部),先声明ROCK类型的变量:// 类的成员变量,整个类的方法都能访问 private ROCK round1Rock;修改
continueRound1方法
把原来创建对象的代码改成给这个成员变量赋值,而不是重新定义局部变量:private void continueRound1 (ActionEvent event){ // 不再定义局部变量,直接给成员变量赋值 round1Rock = new ROCK(500, 100, 100, 100, "Metamorphic"); }优化
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
相关产品推荐
相关产品推荐

