2012-06-17 32 views
9

Tôi cần các giá trị chuyển đổi kiểu T thành JsArray.Cách tạo GWT JsArray?

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

Mọi người có thể giúp tôi không?

Cảm ơn trước, Gnik

Trả lời

20

Bạn không cần phải lựa chọn nhiều: sáng tạo một JsArrayString và thêm vào nó, hoặc sử dụng JSNI.

JsArrayString arr = JavaScriptObject.createArray().cast(); 
arr.push(str1); 
arr.push(str2); 
arr.push(str3); 

hoặc

static native JsArrayString asJsArray(String str1, String str2, String str3) /*-{ 
    return [str1, str2, str3]; 
}-*/; 

Rõ ràng, sau này không quy mô, trong khi được nhanh hơn.

Nó thực sự phụ thuộc chính xác những gì bạn cần làm.

1

Sử dụng Generics, có thể làm điều đó như thế này:

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

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

    return array; 
} 

Rõ ràng, String không mở rộng JavaScriptObject. Bạn sẽ cần phải có quá tải để tính toán cho các loại nguyên thủy. (Hoặc, ít một cách an toàn, bạn có thể loại bỏ các giới hạn của T để cho phép loại tùy ý Bạn sẽ cần phải được nhiều hơn nữa cẩn thận nếu bạn đã làm như vậy..)

4

Sử dụng JsArrayUtils như thế này:

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

Hãy xem các javadoc:

com.google.gwt.core.client.JsArrayUtils lớp

Utility để thao tác Các mảng JS. Các phương thức này không nằm trên các lớp con JavaScriptObject khác, chẳng hạn như JsArray, vì việc thêm các phương thức mới có thể phá vỡ các kiểu con hiện có.

Các vấn đề liên quan