使用lambda表达式创建匿名对象



我正试图用lamdas简化我的对象创建。

我有一个提供public void addCmd(ScriptCommand cmd)-方法的类。

有了这个,我可以写这样的电话:

ScriptCommand cmd = new ScriptCommand() {
@Override
public void run(double deltaTime) {
// some logic here...
}
};
addCmd(cmd);

我已经试过这样称呼:

ScriptCommand cmd = (deltaTime) -> {
// some logic here...
};
addCmd(cmd);

但是,IDE会将其识别为错误。在这种情况下,你如何使用lambdas?

编辑:

ScriptCommand看起来像:

public abstract class ScriptCommand {
private boolean completed = false;
public abstract void run(double deltaTime);
protected void complete() {
completed = true;
}
public boolean isCompleted() {
return completed;
}
}

示例:

@FunctionalInterface // Optional
interface ScriptCommand {
void run(double deltaTime);
}
public static void main(String[] args) {
ScriptCommand command = (deltaTime) -> System.out.println(deltaTime);
// execute code
command.run(3);
// if you want to call addCmd(ScriptCommand)
addCmd(command);
addCmd((deltaTime) -> System.out.println(deltaTime));
}

输出:3.0

最新更新