我刚刚学习Java,之前我在Objective-C中开发了应用程序。我喜欢“块”的概念,因为它们允许在发生某些事情后运行代码。
例如,要在SpriteKit应用中执行一段时间后调用场景helloWorld
中的方法myScene
:
[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
[myScene helloWorld];
}]]]];
Java中有什么类似的块吗?如果是这样,我将如何使用它?是什么语法......
我听过一些关于“闭包”的内容,但我不太确定它们是什么或者如何使用它们。
答案 0 :(得分: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 }
涉及->
的表达式称为lambda。您可以在其中编写任何参数,但是()
的方法run
没有任何参数。您也可以在不提及Runnable
的情况下将Runnable
传递给方法:
Runnable
Java 8引入了许多新接口,其中方法可以返回值或接受参数。