2012-06-17 19 views
9

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

risposta

20

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.

1

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ì..)

4

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.