[英]Saving blocks of code in variables
在Objective C中,您有一個功能塊。 您可以在變量中保存代碼塊並將其作為參數傳遞。
[objects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// Enumerating all the objects of an array
}];
在我的游戲我有一個MenuScene
與MenuSceneItem
秒。 在這種情況下,我想傳遞他們應該執行的代碼,如果他們已被點擊。 這將消除對switch語句的需要。
有沒有辦法在Java中有這樣的方法或類似的東西?
在Java中,您不能擁有使用匿名類所需的匿名功能塊:
menuScene.executeWhenClicked(new Runnable() {
public void run() {
// do something
}
});
這聽起來像是簡單的多態性,例如
public interface Action {
void doSomethingWhenPressed();
}
並只實現一個實現上述接口的對象。 把它作為一個論點。
您可能會使用匿名類來執行此操作,例如
// this method takes an 'Action' as an argument
passToMethod(new Action() {
public void doSomethingWhenPressed() {
System.out.println("Pressed!");
}
});
在java中,您創建一個擴展Runnable的對象(它不必具有顯式類類型),並將該代碼塊放在run
方法中。 像這樣
Runnable myDelayedBlockOfCode = new Runnable() {
public void run() {
doA();
doB();
doC();
}
};
如果使用框架,請仔細查看特定於框架的接口,該接口允許您將這些代碼塊放入框架將調用的任何內容中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.