Java Tutorial in Hindi
जावा रिफ्लेक्शन: अर्थ, उपयोग, उदाहरण, रिफ्लेक्शन API (Java Reflection in Hindi)
Table of Contents
- परिचय
- जावा में रिफ्लेक्शन क्या है? (Reflection in Java in Hindi)
- जावा रिफ्लेक्शन का उपयोग
- जावा में रिफ्लेक्शन का उदाहरण
- जावा रिफ्लेक्शन API
- जावा रिफ्लेक्शन API डायग्राम
- Java.lang.Class में प्रयुक्त मेथड
- जावा रिफ्लेक्शन एपीआई से निकाले गए महत्वपूर्ण अवलोकन
- जावा रिफ्लेक्शन vs जावा रिफ्लेक्शन API
जावा रिफ्लेक्शन से संबंधित अक्सर पूछे जाने वाले प्रश्न
जावा रिफ्लेक्शन java.lang.reflect पैकेज का उपयोग करके काम करता है, जिसमें क्लास, मेथड, फील्ड और कंस्ट्रक्टर जैसी क्लासेज शामिल हैं। ये क्लासेज रनटाइम पर क्लासेज, मेथड, फ़ील्ड्स और कंस्ट्रक्टरों के साथ introspect और interact करने के तरीके प्रदान करती हैं।
जावा रिफ्लेक्शन के लिए कुछ सामान्य उपयोग के मामलों में गतिशील रूप से क्लासेज के उदाहरण बनाना, उन ऑब्जेक्ट्स पर तरीकों को लागू करना, जिनके क्लास के नाम compile-time पर ज्ञात नहीं हैं, प्राइवेट सेक्टर्स तक एक्सेस और मॉडिफाई करना, dependency injection frameworks को लागू करना, और generic serialization और डिसेरिएलाइज़ेशन लाइब्रेरीज का निर्माण करना शामिल है।
- आप किसी क्लास के लिए क्लास ऑब्जेक्ट को कई तरीकों से प्राप्त कर सकते हैं: - क्लास के उदाहरण पर .getClass() विधि को कॉल करके। - क्लास लिटरल पर .क्लास सिंटैक्स का उपयोग करके (उदाहरण के लिए, MyClass.class)। - पूरी तरह से qualified क्लास नाम के साथ Class.forName("full.qualified.ClassName") को कॉल करके।
रिफ्लेक्शन का उपयोग करके क्लास का एक उदाहरण बनाने के लिए, आप क्लास ऑब्जेक्ट की newInstance() मेथड का उपयोग कर सकते हैं, या आप क्लास ऑब्जेक्ट के माध्यम से प्राप्त कंस्ट्रक्टर क्लास से एक विशिष्ट कंस्ट्रक्टर का उपयोग कर सकते हैं और फिर इसकी newInstance() मेथड को लागू कर सकते हैं।
आप क्लास ऑब्जेक्ट के getField() या getDeclaredField() तरीकों के माध्यम से फ़ील्ड ऑब्जेक्ट प्राप्त करके रिफ्लेक्शन का उपयोग करके क्लास के फ़ील्ड तक एक्सेस और मॉडिफाई कर सकते हैं। फ़ील्ड वैल्यू को मॉडिफाई और पुनः प्राप्त करने के लिए क्रमशः फ़ील्ड क्लास के सेट() और गेट() तरीकों का उपयोग करें।
रिफ्लेक्शन आम तौर पर नियमित कोड निष्पादन की तुलना में प्रदर्शन ओवरहेड के साथ आता है क्योंकि इसमें रनटाइम introspection और method invocations शामिल होता है। रिफ्लेक्शन डायरेक्ट मेथड कॉल और फील्ड एक्सेस की तुलना में धीमा है, इसलिए इसका उपयोग विवेकपूर्ण तरीके से और केवल आवश्यक होने पर ही किया जाना चाहिए। परफॉरमेंस-क्रिटिकल कोड में रिफ्लेक्शन का बार-बार उपयोग एप्लिकेशन के परफॉरमेंस को प्रभावित कर सकता है।
हां, रिफ्लेक्शन प्राइवेट मेंबर्स और मेथड सहित किसी क्लास के प्राइवेट मेंबर्स तक एक्सेस सकता है। हालाँकि, ध्यान रखें कि रिफ्लेक्शन का उपयोग करके प्राइवेट मेंबर्स तक पहुँचना और उन्हें मॉडिफाई करना सामान्य access control system को बायपास कर देता है, इसलिए इसका उपयोग सावधानी के साथ और केवल आवश्यक होने पर ही किया जाना चाहिए।
हां, रिफ्लेक्शन का उपयोग करने से Security Risk उत्पन्न हो सकते हैं। चूंकि रिफ्लेक्शन प्राइवेट मेंबर्स तक एक्सेस की अनुमति देता है और एक्सेस कंट्रोल जांच को दरकिनार कर सकता है, इसलिए unauthorized access और संभावित सुरक्षा कमजोरियों को रोकने के लिए रिफ्लेक्शन के माध्यम से प्राप्त किसी भी डेटा को valid और clean करना महत्वपूर्ण है।
हां, जावा रिफ्लेक्शन का उपयोग इंटरफेस और abstract classes के साथ किया जा सकता है। आप उनके तरीकों, क्षेत्रों और कंस्ट्रक्टरों के बारे में जानकारी प्राप्त कर सकते हैं, साथ ही उन क्लासेज के उदाहरण भी बना सकते हैं जो उन इंटरफेस को लागू करते हैं या abstract classes का विस्तार करते हैं।