我刚刚学习 Java,之前用 Objective-C 开发过应用程序。我喜欢“ block ”的概念,因为它们允许代码在发生事情后运行。
例如,要在 SpriteKit 应用程序中调用场景 myScene
方法 helloWorld
中的特定时间后执行 block :
[myScene runAction:[SKAction sequence:@[[SKAction waitForDuration:5], [SKAction runBlock:^{
[myScene helloWorld];
}]]]];
Java中有类似 block 的东西吗?如果是这样,我将如何使用它?语法是什么...
- 将其用作函数参数?
- 在函数中调用所述 block ?
- 给 block 赋值?
我听说过一些有关“闭包”的内容,但我不太确定它们是什么或如何使用它们。
最佳答案
在Java中,实现这一点的方法是使用接口(interface)。最基本的接口(interface)是 Runnable
,它有一个方法 run
。
What's the syntax to...
use it as a function parameter?
void foo(Runnable r)
call said block in the function?
r.run();
assign a value to the block?
在 Java 8 之前,你必须做这样的事情:
Runnable r = new Runnable() {
@Override
public void run() {
// do something
}
}
现在你可以这样做:
Runnable r = () -> { // do something }
涉及 ->
的表达式称为 lambda。小括号 ()
是您可以写入任何参数的位置,但 Runnable
的方法 run
没有任何参数。您还可以将 Runnable
传递给方法,而不提及 Runnable
:
foo(() -> { // do something });
Java 8 引入了很多很多新接口(interface),其中的方法可以返回值或接受参数。
关于java - Java 中有类似 Objective-C block 的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997887/