我有一个String的Java数组,现在我想将其传递给JSNI函数。我尝试在GWT中使用JsArrayString
,但是我发现它不能直接初始化,因为它没有可见的构造函数。那么,如何将String数组传递给JSNI函数,并在JavaScript代码中使用它呢?代码如下所示:
public void callJSNI() {
String[] stringArray = xxx;
//How should I convert the array into a JSNI-readable format here?
}
private native void JSNIMethod(JsArrayString array) /*-{
//some code to use the array in javascript
}-*/
最佳答案
API没有提供简便的方法,您必须创建一个实用程序方法,该方法将:
像这样:
public static JsArrayString toJsArray(String[] input) {
JsArrayString jsArrayString = createEmptyJsArrayString();
for (String s : input) {
jsArrayString.push(s);
}
return jsArrayString;
}
private static native JsArrayString createEmptyJsArrayString() /*-{
return [];
}-*/;
正如OP所建议的,我们当然可以跳过本机初始化并使用
JsArrayString.createArray()
。现在我们可以摆脱本机初始化,因此我们的代码简化为:
public static JsArrayString toJsArray(String[] input) {
JsArrayString jsArrayString = JsArrayString.createArray().cast();
for (String s : input) {
jsArrayString.push(s);
}
return jsArrayString;
}