2014-11-06 55 views
0

我wan't在指我的主类中EventHandler块使用关键字this,说:事件处理程序实现为一个匿名内部类

public class Extra { 

    private SuperObject object; 

    public Extra() { 

     Button.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent ae) { 

       object = new SuperObject(this); 
      } 
     }); 
    } 
} 

// where... 

public class SuperObject { 

    public SuperObject(Extra e) { 

     // something 
    } 
} 

但在这种情况下,我已经得到了有关的警告我还没有为SuperObject类声明一个构造函数,其中ActionEvent参数。在这种情况下我能做些什么?

+1

顺便说一下,这实际上并不是“反射”。 – 2014-11-06 18:29:12

+0

我因缺乏恰当的词而受苦。原谅我。 – bluevoxel 2014-11-06 18:31:23

+0

这不是一个大罪行,没有必要乞求宽恕。 – 2014-11-06 18:32:52

回答

3

this是你的匿名内部EventHandler类。

要访问外部this,请使用Extra.this

2

你必须做这样

object = new SuperObject(Extra.this); 
4

由于您使用的Java 8中,除了其他解决方案(一个或多个)上发布,也可以用一个lambda更换内部类,其中this有其直观的含义(对周围物体的引用):

button.setOnAction(ae -> { 
    object = new SuperObject(this); 
});