2017-06-26 8 views
2

基本的には、JavaScriptで使用できる新しい関数を作成することですが、文字列と匿名関数を引数として渡す必要があります。無名関数は、それ自身の引数を提供する必要もあります。Java Nashorn - 匿名関数を引数として受け入れるJavaでJavaScript関数を定義する方法は?

addEventHandler("eventName", function (event) { 
    // do stuff 
}); 

を、私はJavaが解釈したいのですが方法がそれはそうのようなものです::JavaScriptで

私が持っていると思い

addEventHandler ("eventName", event -> { 
    // do stuff 
}); 

これは可能ですか?全く?前もって感謝します!

答えて

2

functional interfaceを引数として受け入れるJavaメソッドがある場合は、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 
関連する問題