2012-06-17 6 views
9

タイプTの値をJsArrayに変換する必要があります。GWT JsArrayを作成するには?

eg. I have String1, String2 .... Stringn 
I need to convert those String into JsArray<String> 

誰でも手伝ってもらえますか?事前に

おかげで、 Gnik

答えて

20

あなたは多くの選択肢を持っていない: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]; 
}-*/; 

、後者は、より高速でありながら、スケーリングしません。

本当に正確に何をする必要があるかによって異なります。 StringJavaScriptObjectを拡張していない、明らかに

public <T extends JavaScriptObject> JsArray<T> createGenericArray(T... objects) { 
    JsArray<T> array = JavaScriptObject.createArray().cast(); 

    for (T object : objects) { 
     array.push(object); 
    } 

    return array; 
} 

:ジェネリックを使用して

1

は、このようにそれを行うことができます。プリミティブ型を考慮するにはオーバーロードが必要です。 (または、より少ない安全に、あなたは、任意のタイプのためにできるようにTの境界を取り除くことができ、あなたがそうしていた場合は、はるかに注意する必要があると思います。)このような

4

使用JsArrayUtils

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

は、javadocを見てみましょう:操作するための

com.google.gwt.core.client.JsArrayUtils

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

関連する問題