Ich muss Werte des Typs T in JsArray konvertieren.Wie erstellt man GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
Kann mir jemand helfen?
Vielen Dank im Voraus, Gnik
Ich muss Werte des Typs T in JsArray konvertieren.Wie erstellt man GWT JsArray?
eg. I have String1, String2 .... Stringn
I need to convert those String into JsArray<String>
Kann mir jemand helfen?
Vielen Dank im Voraus, Gnik
Man braucht nicht viele Möglichkeiten: ein JsArrayString
und das Hinzufügen, um es zu schaffen, oder JSNI verwenden.
JsArrayString arr = JavaScriptObject.createArray().cast();
arr.push(str1);
arr.push(str2);
arr.push(str3);
oder
static native JsArrayString asJsArray(String str1, String str2, String str3) /*-{
return [str1, str2, str3];
}-*/;
Offensichtlich ist, dass dieser nicht skaliert, während schneller zu sein.
Es hängt wirklich davon ab, was genau Sie tun müssen.
Generika verwenden, könnte es wie folgt tun:
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
Offensichtlich ist, dass String
nicht JavaScriptObject
verlängern. Sie müssten Überladungen haben, um primitive Typen zu berücksichtigen. (Oder, weniger sicher, könnten Sie die Grenzen T
entfernen für beliebige Arten, damit Sie benötigen würde viel vorsichtiger sein, wenn Sie dies tun sollten..)
Verwenden JsArrayUtils
wie folgt aus:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
Werfen Sie einen Blick auf die javadoc:
com.google.gwt.core.client.JsArrayUtils
Utility-Klasse für die Manipulation JS-Arrays. Diese Methoden sind nicht auf andere JavaScriptObject-Unterklassen wie JsArray, da das Hinzufügen neuer Methoden vorhandene Subtypen möglicherweise zu brechen.