java - 如何从匿名类内部访问封闭类实例变量?

标签 java anonymous-class anonymous-inner-class

如何从匿名类的方法内部访问实例变量

class Tester extends JFrame {

   private JButton button;
   private JLabel label;
   //..some more

   public Tester() {
        function(); // CALL FUNCTION
   }

   public void function() {
      Runnable r = new Runnable() {
         @Override
         public void run() {
            // How do I access button and label from here ?
         }
      };
      new Thread(r).start();
   }
}

最佳答案

您正在寻找的是完全合格的地址,因为它们未标记为final

final Runnable r = new Runnable() {
public void run() {
    Tester.this.button // access what you need
    Tester.this.label  // access what you need
}};

在构建 ActionListeners 和其他内容时,您也可以对匿名内部类使用相同的访问模式。

这在规范中解释为 15.8.4 Qualified this ,投反对票的人显然没有读过这些内容。并且也没有阅读理解代码。

关于java - 如何从匿名类内部访问封闭类实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824577/

相关文章:

java - 静态 ConcurrentHashMap 副本中的值对象是否会引用与原始值对象相同的值对象?

java - 内部类究竟是如何访问外部类中的元素的?

constructor - 在 Kotlin 中匿名实现接口(interface)导致 "has no constructors"错误

java - 不存在的隐藏Java内部类之谜

java - Spring Boot 中过滤器链中的自定义数据源

java - 多线程——匹配实例

java - 从匿名类获取对包含实例的引用

java - 接口(interface)作为方法的参数

java - 无法将 JavaEE 应用程序部署到 Glassfish 4.1