我正在开发一个小型图像处理程序。它有一个 GUI,我想将每个按钮绑定(bind)到不同的方法。为此,我决定创建一系列方法,但是到目前为止我还无法使其工作。我尝试过使用匿名类,但它对我不起作用。我的代码:
public class ImageProcessor {
void blur(){
System.out.println("blurring");
}
void sharpen(){
System.out.println("sharpening");
}
}
public class GUI {
private ImageProcessor imager = new ImageProcessor();
private ImageProcessor[] LAMBDAS = new ImageProcessor[]{
public void blur(){imager.blur();}} // one of my failed attempts
}
例如,一旦按下模糊按钮,我想将数组的第一项绑定(bind)到它,在本例中是模糊方法。任何指点将不胜感激!
最佳答案
您正在创建数组,但还必须使用 new
关键字在外大括号内创建新的 ImageProcessor
对象:
class GUI {
private ImageProcessor imager = new ImageProcessor();
private ImageProcessor[] LAMBDAS = new ImageProcessor[] {
//LAMBDAS[0]
new ImageProcessor() {
public void blur() {
imager.blur();
}
},
//LAMBDAS[1]
new ImageProcessor() {
public void blur() {
imager.blur();
}
} };
}
如果愿意,您还可以省略数组初始化语法的 new ImageProcessor[]
部分,而只使用大括号。
上面仅解决了导致编译器错误的语法错误。附带说明一下,事件处理程序通常不是这样绑定(bind)到源的。在这种情况下,数组对你没有帮助。例如,如果您有多个按钮使用不同的参数执行类似的事件,那么您可能需要一个数组。
但是,在您的情况下,通过添加监听器来注册事件应该足够了,而无需编译 ImageProcessor
对象数组,每个 ImageProcessor
只执行一项操作一件事(即 blur()
、sharpen()
等之一)。
关于java - 定义方法数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60354303/