我不想使用关键字this
来引用EventHandler
块中的主要类,比如说:
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
参数。在这种情况下我该怎么办?
答案 0 :(得分:4)
由于您使用的是Java 8,除了发布的其他解决方案之外,您还可以使用lambda替换内部类,其中this
具有直观含义(对周围的引用)对象):
button.setOnAction(ae -> {
object = new SuperObject(this);
});
答案 1 :(得分:3)
this
是您的匿名内部EventHandler
课程。
要访问外部this
,请使用Extra.this
。
答案 2 :(得分:2)
你必须这样做
object = new SuperObject(Extra.this);