我刚刚了解到,我不能在匿名内部类中使用非最终局部变量,所以当我们需要在内部类中更改值而不声明即时变量时,有什么棘手的方法可以做?
最佳答案
您不能出于充分的理由使用它们,在继续之前需要考虑这些因素。您将如何处理匿名类的实例?如果在该方法的范围内仅在本地使用它,则可以使用以下简单技巧(假设您有一个int
var):
final int localVar[] = {1};
new AnonymousClass() {
public void method() { localVar[0]++; }
};
如果实例在创建实例的方法返回后可以访问,则可能会遇到线程安全问题。该实例可以传递给其他线程,并且上面的简单设计不是线程安全的。
关于java - 如何在内部类中更改局部变量的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27061389/