यदि आप विधि पैरामीटर के रूप में टाइप करते हैं तो आप कर सकते हैं।
static <T> List<T> createEmptyList(Class<T> type) {
return new ArrayList<T>();
}
@Test
public void createStringList() {
List<String> stringList = createEmptyList(String.class);
}
तरीके उसी तरह से genericised नहीं किया जा सकता है कि एक प्रकार कर सकते हैं, तो एक गतिशील टाइप सामान्य वापसी प्रकार के साथ एक विधि के लिए एकमात्र विकल्प - ओफ़्फ़ कि एक कौर :-) है - में पारित करने के लिए है एक तर्क के रूप में प्रकार।
जावा जेनरिक, see Angelika Langer's generics FAQ पर वास्तव में उत्कृष्ट पूछे जाने वाले प्रश्नों के लिए।
।
।
का पालन-अप:
इस संदर्भ Collection.toArray(T[])
में के रूप में सरणी तर्क का उपयोग करने के कोई मतलब नहीं होगा। एक सरणी का उपयोग करने का एकमात्र कारण यह है क्योंकि परिणाम (पूर्व-आवंटित) सरणी का उपयोग परिणामों को शामिल करने के लिए किया जाता है (यदि सरणी उन सभी में फिट करने के लिए पर्याप्त है)। यह हर समय रन-टाइम पर एक नई सरणी आवंटित करने पर बचाता है।
हालांकि, शिक्षा के प्रयोजनों के लिए, आप सरणी टाइपिंग उपयोग करने के लिए करना चाहता था अगर, वाक्य रचना बहुत समान है:
static <T> List<T> createEmptyList(T[] array) {
return new ArrayList<T>();
}
@Test
public void testThing() {
List<Integer> integerList = createEmptyList(new Integer[ 1 ]);
}
Cheekysoft क्यों बताते हैं, लेकिन अगर आप वास्तव में जरूरत दूसरे प्रकार डीईएफ़ जोड़ने लग रहा है, बस से पहले स्थिर समारोह कॉल वर्ग के नाम जोड़ें: सूची MyList = MyClass। createEmptyList(); –