我需要将类型T的值转换为JsArray。
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
任何人都可以帮助我吗?
提前致谢, Gnik
答案 0 :(得分: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];
}-*/;
显然,后者不会扩展,而是更快。
这取决于你究竟需要做什么。
答案 1 :(得分:4)
像这样使用JsArrayUtils
:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
看看javadoc:
<强> com.google.gwt.core.client.JsArrayUtils 强>
用于操作JS数组的实用程序类。这些方法没有开启 其他JavaScriptObject子类,例如JsArray,因为添加了新的 方法可能会破坏现有的子类型。
答案 2 :(得分: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
的边界以允许任意类型。如果您这样做,则需要更加小心。)