Java中有类似Objective-C块的东西吗?
我只是在学习Java,以前我用Objective-C开发过应用程序。我喜欢“块”的概念,因为它们允许代码在发生的事情之后运行 例如,要在SpriteKit应用程序中在一定时间后执行一个块,该应用程序从场景调用方法Java中有类似Objective-C块的东西吗?,java,objective-c,objective-c-blocks,Java,Objective C,Objective C Blocks,我只是在学习Java,以前我用Objective-C开发过应用程序。我喜欢“块”的概念,因为它们允许代码在发生的事情之后运行 例如,要在SpriteKit应用程序中在一定时间后执行一个块,该应用程序从场景调用方法helloWorld: [myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{ [myScene helloWorld]; }]]]]; Java中有
helloWorld
:
[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
[myScene helloWorld];
}]]]];
Java中有类似块的东西吗?如果是,我将如何使用它?什么是语法
- 是否将其用作函数参数
- 调用函数中的所述块
- 是否为块指定一个值
我听说过一些“闭包”,但我不太确定它们是什么或如何使用它们。在Java中,实现这一点的方法是使用接口。最基本的接口是
Runnable
,它有一个方法run
什么是语法
是否将其用作函数参数
调用函数中的所述块
是否为块指定一个值
在Java 8之前,您必须执行以下操作:
Runnable r = new Runnable() {
@Override
public void run() {
// do something
}
}
现在,您只需执行以下操作:
Runnable r = () -> { // do something }
涉及->
的表达式称为lambda。brakets()
是编写任何参数的地方,但是Runnable
的方法run
没有任何参数。您还可以将Runnable
传递给方法,而不必提及Runnable
:
foo(() -> { // do something });
Java 8引入了许多新的接口,在这些接口中,方法可以返回值或接受参数。查看Java中的lambdas。在发布类似问题之前,请先查看。
Runnable r = () -> { // do something }
foo(() -> { // do something });