9

タイプTの値をに変換する必要がありますJsArray

たとえば、String1、String2....Stringnがあります。これらの文字列を文字列に変換する必要がありJsArrayます。

どうすればこれを実装できますか?

4

3 に答える 3

21

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];
}-*/;

明らかに、後者はスケーリングしませんが、高速です。

それは本当にあなたが何をする必要があるかによります。

于 2012-06-17T09:11:30.040 に答える
4

このように使用JsArrayUtilsします:

JsArray<String> arr = JsArrayUtils.readOnlyJsArray(new String[] { string1, string2 });

javadocを見てください。

com.google.gwt.core.client.JsArrayUtils

JS配列を操作するためのユーティリティクラス。新しいメソッドを追加すると既存のサブタイプが破損する可能性があるため、これらのメソッドはJsArrayなどの他のJavaScriptObjectサブクラスにはありません。

于 2013-04-24T12:28:14.553 に答える
1

ジェネリックを使用すると、次のようになります。

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て任意のタイプを許可することもできます。そうする場合は、さらに注意する必要があります。)

于 2012-06-17T14:29:33.843 に答える