java - 修改匿名内部类的局部变量

标签 java inner-classes anonymous-class

我发现我们无法修改内部类的局部变量,因为它被定义为final。在阅读时,我发现我们必须将其标记为最终的,这样它就不会造成任何值不匹配问题。但是如果我们真的想修改内部类的局部变量怎么办?有什么解决办法吗?

最佳答案

您无法修改局部变量。但如果局部变量是对象引用,则可以修改它所引用的对象。例如:

public static void main(String[] args) {
    final AtomicReference<String> value = new AtomicReference<String>("hello");

    System.out.println(value); // prints "hello"

    new Runnable() {
        public void run() { value.set("goodbye"); }
    }.run();

    System.out.println(value); // prints "goodbye"
}

关于java - 修改匿名内部类的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643217/

相关文章:

java - 如何使Spring应用程序的业务逻辑用户可配置?

java - JDK、JRE 中的内部类、嵌套类、本地类和匿名类示例

java - 在测试匿名类中的方法时,如何使用 Powermockito 模拟新对象的构造?

java - 修复线程池立即退出,不处理线程的问题

java - 如何在 Spring Controller 方法中从许多 @RequestParam 参数切换到 @ModelAttribute

java - 是否保存替换SQLite数据库

java - 为简单功能创建内部类是一种好习惯吗?

Clojure 导入嵌套类

java - 返回匿名类的新对象的方法

java - 在 Jython 中,我可以创建一个实现 Java 接口(interface)的内联匿名类吗?