2015-10-07 34 views
2

我剛剛學習Java,並且之前在Objective-C中開發過應用程序。我喜歡「塊」的概念,因爲它們允許在發生某些事情之後運行代碼。Java中有沒有像Objective-C塊的東西?

[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{ 
    [myScene helloWorld]; 
}]]]]; 

有沒有像Java中的塊東西:

例如,要在調用從現場myScene的方法helloWorld一個SpriteKit應用一定時間後執行塊?如果是這樣,我將如何使用它?什麼語法...

  • 使用它作爲函數參數?
  • 調用該函數中的塊?
  • 給塊賦值?

我聽說過一些關於「關閉」的問題,但我不確定它們是什麼或如何使用它們。

+1

研究Java中的lambdas。 – dcsohl

+0

在發佈這樣的問題之前,請[搜索](http://stackoverflow.com/search?q=java+objective-c+blocks)。 – rmaddy

回答

4

在Java中,執行此操作的方法是使用接口。最基本的界面是Runnable,它有一個方法run

什麼是語法......

使用它作爲函數參數?

void foo(Runnable r) 

電話中說在功能塊?

r.run(); 

值分配給該塊?

的Java 8之前,你不得不做這樣的事情:

Runnable r = new Runnable() { 
    @Override 
    public void run() { 
     // do something 
    } 
} 

現在,你可以這樣做:

Runnable r =() -> { // do something } 

涉及->的表達式稱爲拉姆達。編號爲()的是您可以編寫任何參數的位置,但Runnable的方法run沒有任何參數。您也可以通過一個Runnable的方法不提Runnable

foo(() -> { // do something }); 

的Java 8引入了很多很多新的接口,這個方法可以返回一個值或接受參數。