Necesito convertir valores de tipo T en JsArray.¿Cómo crear GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
¿Alguien me puede ayudar?
Gracias de antemano, Gnik
Necesito convertir valores de tipo T en JsArray.¿Cómo crear GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
¿Alguien me puede ayudar?
Gracias de antemano, Gnik
No tiene muchas opciones: crear un JsArrayString
y añadiendo a la misma, o el uso de JSNI.
JsArrayString arr = JavaScriptObject.createArray().cast();
arr.push(str1);
arr.push(str2);
arr.push(str3);
o
static native JsArrayString asJsArray(String str1, String str2, String str3) /*-{
return [str1, str2, str3];
}-*/;
Obviamente, este último no escala, mientras que ser más rápido.
Realmente depende de lo que necesita hacer exactamente.
El uso de los genéricos, podría hacerlo de esta manera:
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
Obviamente, String
no se extiende JavaScriptObject
. Debería tener sobrecargas para tener en cuenta los tipos primitivos. (O, menos segura, usted podría quitar los límites de T
para permitir tipos arbitrarios Se necesitaría ser mucho más cuidadoso si tuviera que hacerlo..)
Uso JsArrayUtils
así:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
Tome un vistazo a la javadoc:
com.google.gwt.core.client.JsArrayUtils clase
utilidad para manipular Matrices JS. Estos métodos no están en otras subclases de JavaScriptObject, como JsArray, porque la adición de nuevos métodos podría romper los subtipos existentes.