从匿名内部类修改局部变量

时间:2018-12-06 01:17:53

标签: java inner-classes anonymous-class

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

1 个答案:

答案 0 :(得分:0)

您不能修改局部变量。但是,如果局部变量是对象引用,则可以修改其引用的对象。例如:

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"
}
相关问题