Ho bisogno di convertire i valori di tipo T in JsArray.Come creare GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
Qualcuno mi può aiutare?
Grazie in anticipo, Gnik
Ho bisogno di convertire i valori di tipo T in JsArray.Come creare GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
Qualcuno mi può aiutare?
Grazie in anticipo, Gnik
Non hai molta scelta: la creazione di un JsArrayString
e aggiungendo ad esso, o utilizzando 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];
}-*/;
Ovviamente, quest'ultimo non scala, pur essendo più veloce.
Dipende davvero da cosa esattamente devi fare.
Utilizzando farmaci generici, potrebbe fare in questo modo:
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
Ovviamente, String
non si estende JavaScriptObject
. Avresti bisogno di avere sovraccarichi per tenere conto di tipi primitivi. (O, meno sicurezza, è possibile rimuovere i limiti di T
per consentire tipi arbitrari Avresti bisogno di essere molto più attenti, se si dovesse fare così..)
Usa JsArrayUtils
come questo:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
Date un'occhiata al javadoc:
com.google.gwt.core.client.JsArrayUtils classe
Utility per la manipolazione Array JS. Questi metodi non sono su altre sottoclassi JavaScriptObject, come JsArray, , poiché l'aggiunta di nuovi metodi potrebbe interrompere i sottotipi esistenti.