Ich schreibe eine API, die von etwas JavaScript-Code verwendet werden soll. Einige der Methoden in dieser API sollten ein echtes JavaScript-Array zurückgeben. Leider ist dies nicht funktioniert:Wie kann ich ein echtes JavaScript-Array von einer Java-Methode mit Nashorn zurückgeben?
// MyApi.java
public class MyApi {
String[] returnsJavaArray();
List<String> returnsJavaList();
}
// MyScript.js
var api = getMyApi();
var strings = api.returnsJavaArray(); // Returns some kind of proxy
strings = api.returnsJavaList(); // Also a proxy
Während die Proxies wie strings[i]
grundlegende Dinge zu unterstützen, muss ich sie tatsächlich Arrays sein, um einige Array polyfills zu verwenden. Was ist der beste Weg, dies in Nashorn zu tun?
Meine einzige Idee ist bisher, einen JavaScript-Wrapper der gesamten MyApi
zu schreiben und die Ergebnisse mit Java.from(api.returnsJavaArray())
zu umhüllen, aber das ist ziemlich mühsam.
diese verweisen: http://www.w3schools.com/jsref/jsref_eval.asp – VinhNT
Vom Server? Da es keine Server/Client-Beziehung gibt, führt Nashorn den JS-Code direkt in der JVM aus. –