在Objective C中你有一个功能块。 您可以在变量中保存代码块并将其作为参数传递。
[objects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// Enumerating all the objects of an array
}];
在我的游戏中,我有MenuScene
MenuSceneItem
秒。
在这种情况下,我想传递他们应该执行的代码,如果他们已被点击。
这将消除对switch语句的需要。
有没有办法在Java中有这样的方法或类似的东西?
答案 0 :(得分:2)
在Java中,您不能拥有需要使用匿名类的匿名功能块:
menuScene.executeWhenClicked(new Runnable() {
public void run() {
// do something
}
});
答案 1 :(得分:1)
这听起来像是直截了当的多态,例如
public interface Action {
void doSomethingWhenPressed();
}
并实现一个实现上述接口的对象。将其作为论据传递。
您可能会使用匿名类来执行此操作,例如
// this method takes an 'Action' as an argument
passToMethod(new Action() {
public void doSomethingWhenPressed() {
System.out.println("Pressed!");
}
});
答案 2 :(得分:1)
在java中,您创建一个扩展Runnable的对象(它不必具有显式类类型),并将代码块放在run
方法中。像这样
Runnable myDelayedBlockOfCode = new Runnable() {
public void run() {
doA();
doB();
doC();
}
};
如果使用框架,请仔细查看特定于框架的接口,该接口允许您将这些代码块放入框架将调用的任何内容中。