如何从匿名类中访问封闭的类实例变量?

sap*_*Pro 2 java anonymous-inner-class anonymous-class

如何instance variables从匿名类的方法中访问?

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();
   }
}
Run Code Online (Sandbox Code Playgroud)

小智 9

你要找的是一个完全合格的地址,因为它们没有标记 final

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

Anonymous Inner Classes在构建ActionListeners和其他事情时也使用相同的访问模式.

这在规范中被解释为15.8.4合格的,这是下选民显然没有阅读的内容.并没有阅读理解代码.