从匿名内部修改局部变量 class
Modify local variable from anonymous inner class
我发现我们无法修改内部 class 中的局部变量,因为它被定义为 final。在阅读时我发现我们必须将它标记为最终的,这样它就不会产生任何值不匹配的问题。但是如果我们真的想从内部 class 修改局部变量怎么办?有什么解决办法吗?
您不能修改局部变量。但是如果局部变量是一个对象引用,你可以修改它所引用的对象。例如:
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"
}
我发现我们无法修改内部 class 中的局部变量,因为它被定义为 final。在阅读时我发现我们必须将它标记为最终的,这样它就不会产生任何值不匹配的问题。但是如果我们真的想从内部 class 修改局部变量怎么办?有什么解决办法吗?
您不能修改局部变量。但是如果局部变量是一个对象引用,你可以修改它所引用的对象。例如:
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"
}