2012-06-17 2 views

답변

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

, 빠른하면서 후자는, 확장되지 않습니다.

정말 정확히 당신이해야할 일에 달려 있습니다. 제네릭을 사용

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; 
} 

물론, StringJavaScriptObject를 확장하지 않습니다. 기본 유형을 설명하기 위해 오버로드가 필요할 수 있습니다. (또는 덜 안전하게, 당신은 임의의 종류 수 있도록 T의 경계를 제거 할 수 있습니다 당신이 그렇게한다면 당신은 훨씬 더 조심해야 할 것입니다..)이 같은

4

사용 JsArrayUtils :

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

는 자바 독에서보세요 : 조작

는 com.google.gwt.core.client.JsArrayUtils

유틸리티 클래스를 JS 배열. 새 메서드 을 추가하면 기존 하위 유형이 손상 될 수 있으므로 이러한 메소드는 JsArray와 같은 다른 JavaScriptObject 하위 클래스에 없습니다.

관련 문제