मेरे पास सामान्य रूप से टाइप की गई कक्षा Builder<T>
है जो एक कन्स्ट्रक्टर तर्क Class<T>
लेता है ताकि मैं इस प्रकार को चारों ओर रख सकूं। यह एक वर्ग है जिसे मैं जावा कोड में बहुत उपयोग करता हूं इसलिए मैं हस्ताक्षर को बदलना नहीं चाहता हूं। जब मैं इस तरह निर्माता का उपयोग करने का प्रयास करें:जेनेरिक के साथ सूची की कक्षा प्राप्त करना उदाहरण: सूची <Number> :: कक्षा
Builder<List<Number>>(List<Number>::class)
मैं एक त्रुटि मिलती है: इस को हल करने
किसी भी तरह से "केवल कक्षाएं एक वर्ग शाब्दिक के बाएं हाथ की ओर अनुमति दी जाती है"? मैं Builder
के लिए कन्स्ट्रक्टर नहीं बदल सकता, बहुत से जावा वर्ग इस पर भरोसा करते हैं।
मैं पूरे प्रकार के मिटा मुद्दे को समझता हूं, मैं वास्तव में संकलक को खुश करना चाहता हूं।
संशोधित तरीका – saarrrr
है यह वास्तविक प्रकार पैरामीटर को बनाए रखेगा: 'T :: class.java' 'सूची <*>' का प्रतिनिधित्व करेगा, 'सूची' नहीं, लेकिन एक समाधान है जो इसे संशोधित जेनरिक के लिए करेगा - - सुपर क्लास टोकन। –
hotkey
@hotkey मुझे लगता है कि 'बिल्डर' वर्ग को वास्तविक प्रकार के मानकों को बनाए रखने की आवश्यकता नहीं है, क्योंकि यह एक कन्स्ट्रक्टर तर्क 'कक्षा' लेता है और प्रश्न में बताए गए अनुसार टाइप टाइप नहीं करता है। –
Ilya