कैसे पता लगाएं कि कौन सी कक्षाएं ग्रहण में एक विशेष इंटरफ़ेस को लागू करती हैं?


88

मेरे पास JAR फ़ाइल के रूप में कई निर्भरता के साथ एक एप्लिकेशन है। किसी कारण से मुझे पुस्तकालयों में से एक को विघटित करने और ग्रहण के साथ खोलने की आवश्यकता है। प्रोजेक्ट में दिए गए इंटरफ़ेस के लिए, क्या क्लास (एस) को खोजने का एक तरीका है जो इसे लागू करता है? यह मामला हो सकता है कि इंटरफ़ेस को अन्य लाइब्रेरी में लागू किया गया था जिसे मैंने अभी तक विघटित नहीं किया था। क्या इस तरह की कक्षाओं के लिए ऐसा करना संभव है?

जवाबों:


115

इंटरफ़ेस पर राइट-क्लिक करें, और "ओपन टाइप पदानुक्रम" चुनें। फिर "सबटाइप पदानुक्रम दिखाएं" पर क्लिक करें।


यह मुझे कुछ भी नहीं दिखा, जब मैं "सबटाइप पदानुक्रम दिखाएँ" पर क्लिक करता हूं, तो मैं सिर्फ इंटरफ़ेस को देखता हूं जो क्लास ने इसे लागू नहीं किया था।
Am1rr3zA

1
तब इसका अर्थ है कि प्रोजेक्ट के जावा बिल्ड पाथ में कोई भी वर्ग इस इंटरफ़ेस को लागू नहीं करता है। निश्चित रूप से ग्रहण को संभावित वर्गों के बारे में जानना होगा: जार युक्त फ़ाइल परियोजना के जावा बिल्ड पथ में होनी चाहिए।
जेबी निज़ात

आपका मतलब है कि मुझे जावा बिल्ड पथ में अन्य जार फ़ाइल को जोड़ना होगा?
Am1rr3zA

5
हां बिल्कुल। ग्रहण केवल कक्षाओं में कक्षाओं के बारे में जानता है। यह आपके इंटरफ़ेस को लागू करने वाले कुछ वर्ग को खोजने के लिए आपकी पूरी हार्ड डिस्क को स्कैन नहीं करेगा।
जेबी निज़ेट

मैं अपने जावा बिल्ड पाथ में अन्य जार फ़ाइल जोड़ता हूं लेकिन फिर भी मुझे कार्यान्वयन नहीं दिखा। और मुझे यकीन है कि कुछ वर्ग इसे लागू करते हैं क्योंकि प्रतिबिंब के माध्यम से मैं इसका उपयोग कर सकता हूं।
Am1rr3zA

47

कक्षा का चयन करने के बाद Ctrl+ कोशिश करें T; जावा पर्सपेक्टिव में काम करना चाहिए।


10

आप आइटम पर "टाइप प्रकार पदानुक्रम दिखा सकते हैं" (इस विकल्प को चुनने के लिए राइट क्लिक करें या F4आइटम हाइलाइट होने पर दबाएं ) *।

हालांकि, यह केवल उन परियोजनाओं की सूची देगा जो संदर्भित ("आश्रित") हैं। दूसरों में नहीं।

तो अगर आपने एक जार को विघटित कर दिया है, और एक और जार है जिसे आपने विघटित नहीं किया है, तो उस जार में कार्यान्वयन (इंटरफ़ेस का) सूचीबद्ध नहीं किया जाएगा।

इसके अलावा, मान लें कि आपने एक परियोजना के रूप में जार को विघटित कर दिया है और एक अन्य परियोजना है जो जार की बात कर रही है, और विघटित परियोजना की नहीं, उसमें कार्यान्वयन भी सूचीबद्ध नहीं होंगे।

तो आपको सभी जार को विघटित करना होगा और उन्हें परियोजनाओं के रूप में जोड़ना होगा (और "जावा बिल्ड पाथ" के माध्यम से संदर्भ जोड़ें) यह सुनिश्चित करने के लिए कि आपकी पसंद के जार में सभी कार्यान्वयन सूचीबद्ध हैं।

* त्वरित प्रकार पदानुक्रम, ctrl + T टूलटिप / स्वतः पूर्ण प्रकार के पैनल में समान संरचना दिखाएगा। लेकिन पूर्ण प्रकार की पदानुक्रम उस प्रकार के विश्लेषण के लिए अधिक उपयोगी है जिसे आप करने का इरादा कर रहे हैं।


8

जावा खोज में रेडियो-बटन "कार्यान्वयन" है।


3
यह प्रश्न का उत्तर कैसे नहीं देता है? जावा खोज खोलें, इंटरफ़ेस नाम दर्ज करें, "कार्यान्वयनकर्ता" पर क्लिक करें और आप "यह पाएंगे कि कौन सी कक्षाएं किसी विशेष इंटरफ़ेस को लागू करती हैं।"
स्टैकटेक्चेंजर

1

या राइट-क्लिक करें और Quick Type Hierarchyविस्तृत इंटरफेस और कार्यान्वयन कक्षाओं के एक पुलडाउन मेनू के लिए चयन करें ।


जब मैं राइट-क्लिक करता हूं और त्वरित प्रकार के पदानुक्रम का चयन करता हूं तो मैं केवल इंटरफ़ेस को देखता हूं जो कि कक्षा ने इसे लागू नहीं किया है
Am1rr3zA

0

Ctrl + H (खोज विकल्प) जावा खोज परिप्रेक्ष्य खोलें और इंटरफ़ेस नाम दर्ज करें, कार्यान्वयन रेडियो बटन पर क्लिक करें और आप पाएंगे कि कौन से वर्ग किसी विशेष इंटरफ़ेस को लागू करते हैं। इसके बाद के संस्करण के रूप में ही stackexchanger से जवाब


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.