2

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();
   }
}
4

3 に答える 3

9

マークされていないため、探しているのは完全修飾アドレスです。final

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

Anonymous Inner Classesビルド時などにも同じアクセスパターンを使用しActionListenersます。

これは仕様書で15.8.4 Qualified thisとして説明されており、反対票を投じた人は明らかに読んでいないものです。また、理解のためにコードを読んでいませんでした。

于 2013-04-05T01:46:01.370 に答える