Я пишу API, который будет использоваться некоторым кодом JavaScript. Некоторые из методов в этом API должны возвращать реальный массив JavaScript. К сожалению, это не работает:Как я могу вернуть реальный массив JavaScript из Java-метода с помощью Nashorn?
// 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
В то время как прокси-серверы поддерживают основные вещи, как strings[i]
, мне нужно, чтобы они были фактические массивы, чтобы использовать некоторый массив polyfills. Каков наилучший способ сделать это в Нашорне?
Моя единственная идея - написать обертку JavaScript всего MyApi
и обернуть результаты Java.from(api.returnsJavaArray())
, но это довольно утомительно.
см это: http://www.w3schools.com/jsref/jsref_eval.asp – VinhNT
от сервера? Нет отношений между сервером и клиентом, это Nashorn, запускающий JS-код непосредственно в JVM. –