2009-08-30 13 views
11

मैं जावा में इस तरह कुछ करने के लिए कोशिश कर रहा हूँ:क्या जावा में टेम्पलेट (जेनेरिक) पैरामीटर के प्रकार को खोजने का कोई तरीका है?

public static <T> T foo() { 
    return (T) bar(T); 
} 

public static Object bar(Class<?> klaz) { 
    return klaz.newInstance(); 
} 

लेकिन कोड संकलन नहीं करता है के बाद से मैं टी स्थानापन्न नहीं कर सकता एक कक्षा <> के लिए?।
एक ठोस वर्ग के साथ, मैं बार की तरह कॉल कर सकते हैं:

bar(ConcreteClass.class); 

लेकिन इसके साथ ही टी के लिए काम नहीं करता। अर्थात ऐसी कोई बात नहीं है T.class

सी # में, दोनों ठोस और टेम्पलेट प्रकार के लिए typeof काम करता है के रूप में। तो, कॉल टू बार होगा:

bar(typeof(T)); 

लेकिन मुझे जावा में कुछ भी नहीं मिला है।

क्या मुझे कुछ याद आ रही है, या जावा में टेम्पलेट पैरामीटर के प्रकार को प्राप्त करने का कोई तरीका नहीं है? और यदि जावा में सुविधा नहीं है, तो क्या कोई कामकाज है?

उत्तर

14

इस प्रकार को पाने का कोई तरीका नहीं है। जावा के जेनेरिक उपयोग प्रकार मिटाते हैं, इसलिए जावा स्वयं भी नहीं जानता कि टी रनटाइम पर क्या है।

कामकाज के लिए: आप Class<T> प्रकार का पैरामीटर लेने के लिए foo परिभाषित कर सकते हैं और फिर इसका उपयोग कर सकते हैं।

संबंधित मुद्दे