2012-06-17 16 views
9

मुझे टाइप टी के मूल्यों को जेएसएरे में परिवर्तित करने की आवश्यकता है।जीडब्ल्यूटी जेएसएरे कैसे बनाएं?

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

जाहिर है, बाद, पैमाने पर नहीं है, जबकि तेजी से किया जा रहा है।

यह वास्तव में निर्भर करता है कि आपको वास्तव में क्या करना है।

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 जोड़ तोड़ के लिए

उपयोगिता वर्ग जेएस सरणी ये विधियां अन्य जावास्क्रिप्ट ऑब्जेक्ट उप-वर्गों पर नहीं हैं, जैसे कि जेएसएरे, क्योंकि विधियों को जोड़ना मौजूदा उपप्रकारों को तोड़ सकता है।