可以向匿名类传递参数或访问外部参数吗?例如:
int myVariable = 1;
myButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// How would one access myVariable here?
}
});
有没有办法让侦听器访问myVariable或传递myVariable,而不将侦听器创建为实际的命名类?
发布于 2012-08-31 06:34:35
是的,通过添加一个返回'this‘的初始化器方法,并立即调用该方法:
int myVariable = 1;
myButton.addActionListener(new ActionListener() {
private int anonVar;
public void actionPerformed(ActionEvent e) {
// How would one access myVariable here?
// It's now here:
System.out.println("Initialized with value: " + anonVar);
}
private ActionListener init(int var){
anonVar = var;
return this;
}
}.init(myVariable) );
不需要'final‘声明。
发布于 2011-02-25 00:06:27
如下所示:
final int myVariable = 1;
myButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Now you can access it alright.
}
});
发布于 2014-12-18 21:46:01
这将会产生魔力
int myVariable = 1;
myButton.addActionListener(new ActionListener() {
int myVariable;
public void actionPerformed(ActionEvent e) {
// myVariable ...
}
public ActionListener setParams(int myVariable) {
this.myVariable = myVariable;
return this;
}
}.setParams(myVariable));
https://stackoverflow.com/questions/5107158
复制相似问题