अन्य उत्तर रेगुलर एक्सप्रेशन या प्रतिबिंब का उपयोग पर ध्यान केंद्रित कर रहे हैं, लेकिन क्या इस के लिए कॉल करने के लिए लगता है एक पार्सर है। तो मैं आपको सलाह देता हूं कि आप इसका इस्तेमाल करें।
उदाहरण के लिए, ग्रहण उनके जावा विकास उपकरण (जेडीटी) प्लग-इन है जो आप पार्स उपकरण आपको यह अधिकार क्या करने की जरूरत होगी के सभी के साथ प्रदान करता है। आपको बस इतना करना होगा जेडीटी पूछना बाइंडिंग सक्षम के साथ आप एक सार सिंटेक्स पेड़ (एएसटी) दे रहा है। जब भी एक चर घोषित किया जाता है आप चर का घोषित प्रकार के लिए एक ITypeBinding मिल चाहते हैं, और instantiated प्रकार (यदि चर घोषणा में instantiated है) के लिए एक और।
और ITypeBinding तरीकों कि आपको बता कि क्या यह सामान्य, पैरामिट्रीकृत है, आदि
तुम भी मामले में आप उन की जरूरत प्रकार पैरामीटर मिलेगा।
रूप में अच्छी तरह अन्य जावा पार्सर विकल्प हैं, लेकिन यह एक जिसके साथ मैं परिचित हूँ है।
=============================================
विशिष्ट परिणाम ग्रहण जेडीटी
केस 1 का उपयोग कर: HashSet<String> h1 = new HashSet();
केस 2: HashSet<String> h2 = new HashSet<>();
केस 3: HashSet<String> h3 = new HashSet<String>();
के रूप में वर्तमान में समझा, इस अभ्यास का लक्ष्य प्रकरण पहचान करने के लिए है 1 के रूप में नहीं जेनेरिक (यह कच्चे है), और मामले में 2 और सामान्य रूप में 3 (वे प्रकार पैरामीटर है, हालांकि केस 2 में प्रकार पैरामीटर निहित है)।
new HashSet...
सभी तीन मामलों से उत्पादन नोड्स पर पूरी तरह से देख रहे हैं एक ClassInstanceCreation उदाहरण का उत्पादन।
केस 1 और केस 2 में 0 प्रकार के तर्क हैं, जबकि केस 3 में 1 प्रकार का तर्क है।
केस 1 के लिए आईटीपी बाइंडिंग कच्चे चिह्नित है, जबकि मामलों 2 और 3 के लिए उन्हें पैरामीटरकृत चिह्नित किया गया है। यह सफलता बनाता है, क्योंकि हमारे पास एक तरफ केस 1 और दूसरे मामले 2 और 3 के बीच अंतर करने का एक तरीका है।
केस 1 के लिए आईटीपी बाइंडिंग में 0 प्रकार के तर्क हैं, जबकि मामले 2 और 3 दोनों में IType बाइंडिंग में 1 प्रकार का तर्क है। ध्यान दें कि केस 2 में एएसटी में 0 प्रकार के तर्क हैं, लेकिन बाइंडिंग में एक प्रकार का तर्क है। यह एक स्पष्ट प्रकार तर्क और हीरा ऑपरेटर के उपयोग के बीच अंतर करने की अनुमति देता है।
इस कार्य को पूरा करने के लिए आवश्यक सभी जानकारी एएसटी और बाइंडिंग से आसानी से उपलब्ध है।
अब यहां बुरी खबर है: बाइंडिंग केवल तभी उपलब्ध होती है जब बाइट कोड उपलब्ध हो, यानी यह एक साधारण पाठ विश्लेषण अभ्यास नहीं है।
क्या आप उन प्रकारों की पहचान करना चाहते हैं जिनमें उनकी घोषणा में एक या अधिक प्रकार के पैरामीटर हैं? या एक प्रकार के सामान्य उपयोग की पहचान करने के लिए? उदाहरण के लिए, @manouti के रूप में, हैशसेट को एक प्रकार पैरामीटर के साथ परिभाषित किया गया है, लेकिन इसे कच्चे तरीके से उपयोग किया जा सकता है। तो क्या आप वास्तव में जेनेरिक के रूप में मूल्यांकन करने के लिए कच्चे हैशसेट का उपयोग करके एक परिवर्तनीय घोषणा चाहते हैं? –
नहीं, इसे इंगित करने के लिए धन्यवाद। जब मैं एक टाइप किए गए पैरामीटर के साथ हैशसेट को परिभाषित करता हूं तो मैं केवल सत्य वापस करना चाहता हूं। – akhiljain