我正在创建一个按钮类,我希望它将一个void作为一个参数(在constroctor中),以便在用户单击它时调用void。因此,我不必void mouseClicked() {if (button.mouseIsIn()) {doIt();}
,并且当用户点击它时会自动调用它。像Button button = new Button(x,y,width,height,handleMouseClick());
一样。提前致谢。
答案 0 :(得分:0)
首先,没有“虚空”这样的东西 - 你可以使用函数并使用 void返回类型,但它没有意义称他们为空洞。
话虽如此,这取决于您使用的是Java还是JavaScript模式。假设您正在使用Java模式,那么答案是否,您不能将函数作为参数传递。你可以做的是传递一个类的实例,然后调用该类的函数。像这样:
class MyAction{
void doIt(){
//whatever
}
}
定义此类后,您可以使用new
关键字创建它的实例:
MyAction myAction = new MyAction();
然后您可以将其传递到Button
构造函数:
Button button = new Button(x, y, width, height, myAction);
然后在Button
课程中,只要您想要调用该函数,就可以调用myAction.doIt()
:
void mouseClicked() {
if (button.mouseIsIn()) {
myAction.doIt();
}
}
您可以将此方法与匿名内部类结合使用,以便您可以使用自己的MyAction
实现动态创建doIt()
个实例。像这样:
MyAction actionOne = new MyAction(){
void doIt(){
doThingOne();
}
}
Button buttonOne = new Button(1, 2, 3, 4, actionOne);
MyAction actionTwo = new MyAction(){
void doIt(){
doThingTwo();
}
}
Button buttonTwo = new Button(1, 2, 3, 4, actionTwo);
如果您使用的是JavaScript模式,那么您可以直接将函数作为参数传递。
可以通过Google搜索“Java pass function as parameter”或“JavaScript pass function as parameter”找到更多信息。