के माध्यम से किसी दिए गए वर्ग के लिए सुलभ विधियों की एक सूची प्राप्त करना क्या किसी दिए गए वर्ग द्वारा सुलभ (आवश्यक रूप से सार्वजनिक नहीं) विधियों की एक सूची प्राप्त करने का कोई तरीका है? प्रश्न में कोड पूरी तरह से अलग वर्ग में होगा।प्रतिबिंब
उदाहरण:
public class A {
public void methodA1();
protected void methodA2();
void methodA3();
private void methodA4();
}
public class B extends A {
public void methodB1();
protected void methodB2();
private void methodB3();
}
वर्ग B
के लिए मैं चाहता हूँ प्राप्त करने के लिए:
- अपने स्वयं के तरीकों
methodA1
औरmethodA2
वर्ग से के सभीA
methodA3
तभी यदि कक्षाB
उसी पैकेज में हैA
methodA4
परिणामों में कभी भी शामिल नहीं होना चाहिए क्योंकि यह B
वर्ग के लिए पहुंच योग्य नहीं है। एक बार फिर से स्पष्टीकरण के लिए, उपरोक्त विधियों को खोजने और वापस करने के लिए आवश्यक कोड पूरी तरह से अलग वर्ग/पैकेज में होंगे।
अब, Class.getMethods()
केवल सार्वजनिक तरीकों को लौटाता है और इस प्रकार मैं जो चाहता हूं वह नहीं करेगा; Class.getDeclaredMethods()
केवल वर्तमान कक्षा के लिए विधियों को लौटाता है। जबकि मैं निश्चित रूप से उत्तरार्द्ध का उपयोग कर सकता हूं और कक्षा पदानुक्रम को दृश्यता नियमों को मैन्युअल रूप से जांचने के लिए चला सकता हूं, लेकिन अगर बेहतर समाधान हो तो मैं नहीं चाहूंगा। क्या मैं यहां कुछ चमकदार रूप से स्पष्ट हूं?
कि अभी भी जो मैं चाहता क्योंकि यह निजी/पैकेज निजी तरीके के रूप में अच्छी तरह से वापस आ जाएगी ऐसा नहीं करता है: तो मेरे लिए पूरा कोड (इनपुट तर्क प्रकारों, संशोधक और प्रकार वापसी सहित) था। एनोटेटेड विधियों को खोजने के लिए आपका कोड पूरी तरह से उचित है; मुझे जो चाहिए वह रन टाइम पर पता लगाने के लिए है कि 'बी' इंस्टेंस का उपयोग किया जा सकता है। जैसा कि मैंने कहा, मैं ऐसा करने के लिए कोड लिख सकता हूं (आपके द्वारा पोस्ट की गई चीज़ों के समान और एक्सेसिबिलिटी की जांच करने के लिए फेंकने वाले कुछ ifs) लेकिन मैं सोच रहा था कि कोई बेहतर तरीका है या नहीं। – ChssPly76
अच्छी तरह से ऐसा करने के लिए कोई मानक एपीआई फ़ंक्शन नहीं है ताकि आप इसे स्वयं लिख रहे हों। बस। आप कुछ हद तक असामान्य आवश्यकता कर रहे हैं। आम तौर पर प्रतिबिंब के साथ आप केवल सार्वजनिक रूप से ** पहुंच योग्य होते हैं, इसलिए getMethods() और यही कारण है कि सहायक कार्य मौजूद है। आप जो चाहते हैं उसके लिए ऐसा कोई भी मानक (मानक) सहायक नहीं है इसलिए आप इसे स्वयं लिख रहे हैं। – cletus
मुझे पता है कि कोई मानक एपीआई नहीं है; मैं उम्मीद कर रहा था कि किसी को भी ऐसी ही समस्या हो और समाधान मिले - लेकिन मुझे नहीं लगता। मैंने बीन्यूटिल्स/जावसिस्ट/आदि जैसे स्पष्ट स्थानों में इससे संबंधित कुछ भी नहीं देखा ... या तो। संहिता कुछ हद तक शामिल हो गई, असल में - नेस्टेड कक्षाओं में सिंथेटिक तरीकों से निपटने के लिए ... – ChssPly76