簡體   English   中英

在變量中保存代碼塊

[英]Saving blocks of code in variables

在Objective C中,您有一個功能塊。 您可以在變量中保存代碼塊並將其作為參數傳遞。

[objects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    // Enumerating all the objects of an array
}];

在我的游戲我有一個MenuSceneMenuSceneItem秒。 在這種情況下,我想傳遞他們應該執行的代碼,如果他們已被點擊。 這將消除對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM