先上图

Java匿名内部类可以访问外部类的成员;若访问所在方法的成员,那个成员必须具有final属性

图中匿名内部类实现的监听器若访问所在成员方法onCreated中的editText变量,editText必须就有final属性,因为多线程的生命周期问题。onCreate所在线程可能早结束于匿名内部类实现的监听器,导致editText变量的生命周期也结束了。而监听器还在工作,它要访问editText怎么办呢?那就需要editText具有final属性,值不允许改变,监听器访问的是复制过来的参数。

而对于外部类中的成员,作为局部的匿名内部类可以随便访问。如图中的state成员变量。


下图给出示例证明主线程结束,监听器线程还在工作。

Java匿名内部类可以访问外部类的成员;若访问所在方法的成员,那个成员必须具有final属性


相关文章:

  • 2021-06-08
  • 2021-08-09
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2022-02-02
  • 2022-02-01
  • 2022-01-21
猜你喜欢
  • 2022-12-23
  • 2021-07-27
  • 2022-02-25
  • 2022-12-23
  • 2022-12-23
  • 2021-05-12
  • 2022-12-23
相关资源
相似解决方案