我需要将 T 类型的值转换为JsArray
.
例如,我有 String1、String2 .... Stringn。我需要将这些字符串转换为JsArray
字符串。
我该如何实施?
您没有太多选择:创建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];
}-*/;
显然,后者不能扩展,同时速度更快。
这真的取决于你到底需要做什么。
像这样使用JsArrayUtils
:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
看一下javadoc:
com.google.gwt.core.client.JsArrayUtils
用于操作 JS 数组的实用程序类。这些方法不在其他 JavaScriptObject 子类上,例如 JsArray,因为添加新方法可能会破坏现有的子类型。
使用泛型,可以这样做:
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
以允许任意类型。如果要这样做,您需要更加小心。)