"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या जावा रिफ्लेक्शन स्थानीय रूप से घोषित परिवर्तनीय नामों को पुनः प्राप्त कर सकता है?

क्या जावा रिफ्लेक्शन स्थानीय रूप से घोषित परिवर्तनीय नामों को पुनः प्राप्त कर सकता है?

2024-12-23 को प्रकाशित
ब्राउज़ करें:695

Can Java Reflection Retrieve Locally Declared Variable Names?

जावा रिफ्लेक्शन: स्थानीय चर नामों को उजागर करना

समस्या विवरण:

क्या जावा रिफ्लेक्शन का उपयोग नामों को पुनः प्राप्त करने के लिए किया जा सकता है स्थानीय रूप से घोषित चर? एक कोड स्निपेट दिया गया है जैसे:

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();

क्या हम एक ऐसी विधि विकसित कर सकते हैं जो वेरिएबल नामों को इंगित करती है, जैसे:

public void baz(Foo... foos) {
    for (Foo foo : foos) {
        // Print the name of each foo - b, a, and r
        System.out.println(***); // Placeholder for variable name access
    }
}

समाधान:

जावा 8 तक, प्रतिबिंब के माध्यम से स्थानीय चर नाम पुनर्प्राप्त करना संभव नहीं था। हालाँकि, उस संस्करण में आंशिक समर्थन पेश किया गया था। पैरामीटर नाम, एक विशेष प्रकार के स्थानीय चर, प्रतिबिंब के माध्यम से सुलभ हो गए। यह आमतौर पर निर्भरता इंजेक्शन फ्रेमवर्क द्वारा नियोजित @ParameterName जैसे एनोटेशन को बदलने में उपयोगी साबित हुआ।

अधिक व्यापक स्थानीय चर नाम की जानकारी के लिए, क्लास फ़ाइलों की जांच करने से कुछ अंतर्दृष्टि मिल सकती है। संकलन के दौरान, अनुकूलन तकनीकें कभी-कभी स्थान बचाने के लिए इस डेटा को ख़त्म कर देती हैं। हालाँकि, यदि यह मौजूद है, तो एक विधि की स्थानीय चर तालिका विशेषता उनके संबंधित निर्देश दायरे में चर के प्रकार और नामों को सूचीबद्ध करती है।

एएसएम जैसे बाइटकोड इंजीनियरिंग उपकरण संभावित रूप से रनटाइम पर इस जानकारी का निरीक्षण करने के लिए तंत्र प्रदान कर सकते हैं। मुख्य रूप से विकास परिवेश में इस क्षमता के विशिष्ट अनुप्रयोग को देखते हुए, ऐसे पुस्तकालय केवल परिवर्तनीय नाम निकालने से परे पूरक क्षमताएं प्रदान करते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3