基本上我要做的是创建一个可以在JavaScript中使用的新函数,但它需要一个字符串和一个匿名函数作为参数传递。匿名函数也必须提供它自己的参数。
在我想要的JavaScript中:
addEventHandler( "eventName", function ( event ) {
// do stuff
});
以及我希望Java解释的方式是这样的:
addEventHandler ( "eventName", event -> {
// do stuff
});
这可能吗?什么?提前谢谢!
答案 0 :(得分:2)
如果您的Java方法接受functional interface作为参数,则可以在javascript中传递匿名函数。
例如:
public static void main(String[] args) throws Throwable {
ScriptEngine se = new ScriptEngineManager().getEngineByExtension("js");
se.put("myObject", new MyClass());
se.eval("myObject.someMethod('hello', function(e){ print(e); })");
}
public static class MyClass { // Class needs to be public
public void someMethod(String s, Consumer<String> cons) {
System.out.println(s);
cons.accept("SomeString");
}
}
打印:
hello
SomeString