当前位置: 首页 > 知识库问答 >
问题:

绕过“封闭类型中定义的最终局部变量”

唐俊英
2023-03-14

我正在写一个程序,我得到这样的结果:“最后的局部变量asd不能被赋值,因为它是在一个封闭类型中定义的”。

我将提供一个示例,它不是来自我的代码,但这也会产生错误。我有一个arraylist,我想以后在按钮之外使用它(如果我在按钮内部定义它,以后就不能使用它了),但是按下按钮应该会给这个arraylist提供值。在本例中,它将“创建一个新的ArrayList”,这将导致同样的问题。

        Button btn = new Button("ASD");
        final ArrayList asd = new ArrayList();
        btn.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(final ActionEvent event) {
                asd = new ArrayList(); //here's the error..
            }
        });

共有1个答案

章昱
2023-03-14

清除ArrayList,然后添加值。

 类似资料:
  • 问题内容: 关于编译器错误,有一些关于Stack Overflow的主题,解决方案是“将其声明为最终的,您就完成了”,但是对于这个 理论性的 问题,我想检查一下该代码无法编译的逻辑原因是什么: (解决方案:声明为final),而这一点却做到了: 我真的很困惑 不是最终值,它可以多次更改,而的可怜参数只能在其方法体内更改,而是由编译器负责;) 甚至编译器错误也误导了我。: 与什么不同?与内部类不是在

  • 我目前正在学习继承,对于在超类中声明一个方法final应用于子类的限制,我有点困惑。假设我有一个具有取款方法的超类BankAccount,它需要用户密码和金额才能取款,并将帐户余额设置为(balance - amount)。我希望将该方法声明为final,这样其他子类就不会潜在地覆盖它,并允许客户端在不改变帐户余额的情况下取款。 我想避免这样的事情被允许: 然而,有些银行账户允许透支,在提款时也必

  • 问题内容: 我想知道使用最终局部变量是否有可用性。当继承出现时,变量无论如何都不会被覆盖。例如下面的简单代码 这个例子很简单,可能不是一个相关的代码,但是问题比较笼统。我已经看到了很多代码(全部都包含在具有最终局部变量的main函数中)是否有将局部变量声明为final other的可用性。不能在同一功能中进行编辑? 问题答案: 首先,关于变量被“覆盖”的部分具有两个非常不同的含义。对于类和方法,它

  • 7.5.10 局部变量的定义 局部变量的定义格式: LOCAL 变量名[[数量]] [:数据类型] [,变量名[[数量]] [:数据类型]]... 伪指令LOCAL的作用是说明一个或多个临时的局部变量(位于堆栈中)。局部变量必须在任何指令之前加以说明,并可用多个LOCAL伪指令来说明其局部变量。 在子程序中,若说明了某个局部变量,则子程序体中的指令就可使用该局部变量。汇编程序会把对它的引用转换成用

  • 问题内容: 我是lambda和Java8的新手。我面临以下错误。 封闭范围中定义的局部变量日志必须是final或有效的final 问题答案: 该消息说,到底是什么问题:你的变量 数 必须是最后的(即:携带关键字决赛),也可以有效地最终(即:你只有一个值分配给它 一旦 拉姆达外)。否则,您将无法在lambda语句中使用该变量。 但是,当然,这与您使用 log 冲突。关键是:您不能在lambda内部写

  • 问题内容: 我收到错误提示,就像在主题中一样,请问如何修复…错误在menuItem循环中,在这里我尝试将textArea前景颜色设置为从menuItem中选择的一种:(colors [mi]) 问题答案: 该错误意味着 您不能在内部类中使用局部变量。 要在内部类中使用变量,必须对其进行声明。只要是循环计数器并且不能分配变量,就必须创建一种变通方法来获取可在内部类内部访问的变量中的值: 因此,您的代