9

我需要将 T 类型的值转换为JsArray.

例如,我有 String1、String2 .... Stringn。我需要将这些字符串转换为JsArray字符串。

我该如何实施?

4

3 回答 3

21

您没有太多选择:创建JsArrayString并添加到它,或者使用 JSNI。

JsArrayString arr = JavaScriptObject.createArray().cast();
arr.push(str1);
arr.push(str2);
arr.push(str3);

或者

static native JsArrayString asJsArray(String str1, String str2, String str3) /*-{
  return [str1, str2, str3];
}-*/;

显然,后者不能扩展,同时速度更快。

这真的取决于你到底需要做什么。

于 2012-06-17T09:11:30.040 回答
4

像这样使用JsArrayUtils

JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });

看一下javadoc:

com.google.gwt.core.client.JsArrayUtils

用于操作 JS 数组的实用程序类。这些方法不在其他 JavaScriptObject 子类上,例如 JsArray,因为添加新方法可能会破坏现有的子类型。

于 2013-04-24T12:28:14.553 回答
1

使用泛型,可以这样做:

public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
    JsArray<T> array = JavaScriptObject.createArray().cast();

    for (T object : objects) {
        array.push(object);
    }

    return array;
}

显然,String不扩展JavaScriptObject。您需要有重载来解释原始类型。(或者,不太安全,您可以删除边界T以允许任意类型。如果要这样做,您需要更加小心。)

于 2012-06-17T14:29:33.843 回答