如何创建GWT JsArray?
我需要将T类型的值转换为如何创建GWT JsArray?,gwt,gwt2,Gwt,Gwt2,我需要将T类型的值转换为JsArray 例如,我有String1、String2。。。。斯特林。我需要将这些字符串转换为JsArraystring 如何实现这一点?您没有太多选择:创建jsarraysting并添加到其中,或者使用JSNI。 JsArrayString arr=JavaScriptObject.createArray().cast(); arr.push(str1); arr.push(str2); arr.push(str3); 或 静态本机JsArrayString as
JsArray
例如,我有String1、String2。。。。斯特林。我需要将这些字符串转换为JsArray
string
如何实现这一点?您没有太多选择:创建
jsarraysting
并添加到其中,或者使用JSNI。
JsArrayString arr=JavaScriptObject.createArray().cast();
arr.push(str1);
arr.push(str2);
arr.push(str3);
或
静态本机JsArrayString asJsArray(字符串str1、字符串str2、字符串str3)/*-{
返回[str1,str2,str3];
}-*/;
显然,后者虽然速度更快,但无法扩展
这实际上取决于您需要做什么。使用泛型,可以这样做:
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
public JsArray createGenericArray(T…对象){
JsArray array=JavaScriptObject.createArray().cast();
对于(T对象:对象){
array.push(对象);
}
返回数组;
}
显然,
String
没有扩展JavaScriptObject
。您需要有重载来说明基本类型。(或者,更不安全的是,您可以删除T
的边界以允许任意类型。如果这样做,您需要更加小心。)使用JsArrayUtils
,如下所示:
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
JsArray arr=JsArrayUtils.readOnlyJsArray(新字符串[]{string1,string2});
看看javadoc:
com.google.gwt.core.client.JsArrayUtils
用于操作JS数组的实用程序类。这些方法不适用
其他JavaScriptObject子类,如JsArray,因为添加新的
方法可能会破坏现有的子类型