generics - How do I get the Java compiler to tell me what type it infers? -
जब मेरे पास जावा जेनेरिक फ़ंक्शन होता है:
& lt; T & gt; टी का चयन (टी ए, टी बी) {}
और मैं इसे कहीं से कहता हूं, मैं कैसे पता लगा सकता है कि किस प्रकार टी के लिए अनुमान लगाया गया है?
संपादित करें: प्रकार का संकलन समय संकलन पर होता है तो मैं क्या पूछ रहा हूं, मैं कंपाइलर को कुछ जानकारी (अनुमानित प्रकार) को संकलित करने के दौरान कैसे बताऊं, लेकिन वह इसे क्लासीफ़ फ़ाइल में नहीं बनाती?
एक मैं जो काम कर सकता हूं वह विभिन्न प्रकार के वेरिएबल को असाइन करने का प्रयास करता है, उदाहरण के लिए:
// कंपाइल, तो अनुमानित प्रकार कम से कम थ्रोएबल है थ्रोएबल एफू = चुन (नया EOFException (), नया FileNotFoundException ()); // यदि यह संकलित होता है, तो टी मानचित्र होना चाहिए या ऐसा कुछ जो मानचित्र को लागू करेगा नक्शा foo = चुनें (नया हैशम (), नया ट्रीमार्क ());
लेकिन उस पर असत्य नहीं है मैं संकलक को यह बताने के लिए चाहता हूं कि मुझे 20 प्रश्नों को चलाने के बजाय टी के लिए किस प्रकार का अनुमान लगाया जाए।
ग्रहण में, माउस को विधि कॉल अभिव्यक्ति पर रखें। ग्रहण अनुमानित प्रकार का उपयोग करके हस्ताक्षर प्रदर्शित करेगा।
संपादित करें : ऐसा प्रतीत होता है कि यह वास्तव में हमेशा सही नहीं होता है। निम्नलिखित घोषणाओं के लिए
इंटरफ़ेस I {void foo ();} वर्ग सी {} वर्ग डी सी का विस्तार करता है I {सार्वजनिक void foo () {}} वर्ग ई ई सी लागू करता है मैं {सार्वजनिक Void foo () {}}
और अभिव्यक्ति,
java.util.Arrays.asList (नया डी (), नया ई ()) .Get (0) .foo ();
प्रदर्शित अनुमानित प्रकार है? सी
का विस्तार करता है, लेकिन वास्तव में अनुमानित प्रकार है? सी और amp; I
, जैसा कि foo
पर अनुमत पहुंच से स्पष्ट है मुझे कोई सुराग नहीं है कि क्यों ग्रहण अपने अंतर्निर्मित कंपाइलर से भिन्न प्रकार प्रदर्शित करता है ...
Comments
Post a Comment