タイプTの値をに変換する必要がありますJsArray
。
たとえば、String1、String2....Stringnがあります。これらの文字列を文字列に変換する必要がありJsArray
ます。
どうすればこれを実装できますか?
JsArrayString
を作成して追加するか、JSNIを使用するか、
という選択肢はあまりありません。
JsArrayString arr = JavaScriptObject.createArray().cast();
arr.push(str1);
arr.push(str2);
arr.push(str3);
また
static native JsArrayString asJsArray(String str1, String str2, String str3) /*-{
return [str1, str2, str3];
}-*/;
明らかに、後者はスケーリングしませんが、高速です。
それは本当にあなたが何をする必要があるかによります。
このように使用JsArrayUtils
します:
JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });
javadocを見てください。
com.google.gwt.core.client.JsArrayUtils
JS配列を操作するためのユーティリティクラス。新しいメソッドを追加すると既存のサブタイプが破損する可能性があるため、これらのメソッドはJsArrayなどの他のJavaScriptObjectサブクラスにはありません。
ジェネリックを使用すると、次のようになります。
public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) {
JsArray<T> array = JavaScriptObject.createArray().cast();
for (T object : objects) {
array.push(object);
}
return array;
}
明らかに、String
拡張しませんJavaScriptObject
。プリミティブ型を説明するには、オーバーロードが必要です。(または、安全性が低くなりますが、の境界を削除しT
て任意のタイプを許可することもできます。そうする場合は、さらに注意する必要があります。)