如何更改内部类中局部变量的值?

Mor*_*eza 3 java android inner-classes

我刚刚了解到我不能在匿名内部类中使用非最终局部变量,那么当我们需要在不声明即时变量的情况下更改内部类中的值时,有什么棘手的方法可以做到吗?

Mar*_*nik 5

您不能使用它们有充分的理由,在继续之前您需要考虑这一点。您究竟将如何处理匿名类的实例?如果它仅在该方法的范围内本地使用,那么您可以使用这个简单的技巧(假设您有一个intvar):

final int localVar[] = {1};
new AnonymousClass() {
  public void method() { localVar[0]++; }
};
Run Code Online (Sandbox Code Playgroud)

如果在创建实例的方法返回后可以访问该实例,那么您可能会遇到线程安全问题。该实例可能会传递给其他线程,并且上面的简单设计不是线程安全的。