requires और exports
Dependencies और visibility नियंत्रित करें
requires और exports, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मॉड्यूल आलेख को नियंत्रित करना
दो निर्देश मॉड्यूल आलेख का आकार तय करते हैं: requires घोषित करता है कि आप किन चीज़ों पर निर्भर हैं, और exports घोषित करता है कि आप क्या उजागर करते हैं।
यह पाठ इनके विभिन्न रूपों और उनसे बनने वाले पठनीयता तथा अभिगम्यता के नियमों को समझाता है।
साधारण requires
एक साधारण requires X; का अर्थ है कि "यह मॉड्यूल मॉड्यूल X को पढ़ता है।" आपका कोड X के निर्यात किए गए सार्वजनिक प्रकारों का उपयोग कर सकता है, लेकिन आपके मॉ्यूल के उपभोक्ताओं को X के बारे में कुछ पता नहीं चलता।
module com.example.app {
requires java.sql;
}पारगामी requires
requires transitive Y; का अर्थ है कि जो भी मॉड्यूल आपको पढ़ता है, वह Y को भी पढ़ता है। इसे निहित पठनीयता कहते हैं और यह तब उपयोगी है जब आपका प्रोग्रामिंग इंटरफ़ेस Y के प्रकारों को उजागर करता है।
module com.example.api {
requires transitive java.sql;
}transitive का उपयोग कब करें
transitive का उपयोग तब कीजिए जब आपके निर्यात किए गए प्रोग्रामिंग इंटरफ़ेस की कोई विधि किसी अन्य मॉड्यूल का प्रकार लौटाती हो या स्वीकार करती हो। अन्यथा कॉल करने वाले लौटाए गए प्रकार का नाम तक अपनी requires घोषणा के बिना नहीं लिख सकेंगे।
इससे उपभोक्ताओं को अनावश्यक निर्भरताएँ घोषित करने की आवश्यकता नहीं रहती।
स्थैतिक requires
requires static Z; केवल संकलन-समय की निर्भरता घोषित करता है। मॉड्यूल को संकलन के लिए इसकी आवश्यकता होती है, लेकिन संचालन के समय यह वैकल्पिक होता है। यह एनोटेशन प्रोसेसर या वैकल्पिक एकीकरण के लिए बिल्कुल उपयुक्त है।
module com.example.app {
requires static com.example.annotations;
}साधारण exports
exports pkg; pkg के सार्वजनिक प्रकारों को उन सभी मॉड्यूलों द्वारा पढ़ने योग्य बनाता है जो आपके मॉ्यूल पर निर्भर हैं।
module com.example.lib {
exports com.example.lib.api;
}विशिष्ट exports
विशिष्ट निर्यात exports pkg to modA, modB; का उपयोग करके किसी पैकेज को केवल निर्दिष्ट नामित मॉड्यूलों के लिए उजागर करता है। यह किसी बड़ी प्रणाली के भीतर सहयोगी मॉड्यूलों के लिए उपयोगी है।
module com.example.core {
exports com.example.core.internal to com.example.web, com.example.batch;
}रिफ्लेक्शन के लिए opens
exports सार्वजनिक सदस्यों तक संकलन-समय और संचालन-समय की पहुँच देता है। गहन रिफ्लेक्शन (निजी क्षेत्रों) के लिए इसके बजाय opens pkg; आवश्यक है। इसका उपयोग Jackson या Hibernate जैसे फ़्रेमवर्क करते हैं।
module com.example.model {
exports com.example.model;
opens com.example.model.entities to com.fasterxml.jackson.databind;
}खुले मॉड्यूल
यदि पूरे मॉड्यूल को रिफ्लेक्शन के माध्यम से पहुँच की आवश्यकता हो, जैसा कि पुराने फ़्रेमवर्कों में आम है, तो उसे open घोषित कीजिए। इसके बाद हर पैकेज रिफ्लेक्शन के लिए खुला होता है, हालाँकि सामान्य exports अब भी संकलन-समय की पहुँच को नियंत्रित करता है।
open module com.example.beans {
requires java.logging;
}पठनीयता बनाम अभिगम्यता
किसी अन्य मॉड्यूल के प्रकार का उपयोग करने के लिए दोनों शर्तों का पूरा होना आवश्यक है:
- पठनीयता: आपका मॉड्यूल उस मॉड्यूल के लिए
requiresघोषित करता है - अभिगम्यता: वह मॉड्यूल पैकेज को
exportsकरता है और प्रकार सार्वजनिक है
इनमें से कोई भी शर्त पूरी न होने पर कंपाइलर आपका कोड अस्वीकार कर देता है।
सबको एक साथ देखना
एक सुव्यवस्थित मॉड्यूल, जो JDBC के प्रकारों को फिर से उजागर करता है और JSON पुस्तकालय के लिए एंटिटी को रिफ्लेक्शन हेतु खोलता है:
module com.example.service {
requires transitive java.sql;
requires static com.example.annotations;
exports com.example.service.api;
exports com.example.service.spi to com.example.plugins;
opens com.example.service.dto to com.fasterxml.jackson.databind;
}त्वरित जाँच
फिर से उजागर किए गए प्रोग्रामिंग इंटरफ़ेस के प्रकारों के लिए सही निर्देश चुनिए।
पुनरावृत्ति
आपने निर्भरता और दृश्यता के निर्देश सीखे:
requires,requires transitive,requires staticexportsऔर विशिष्टexports ... to- रिफ्लेक्शन के लिए
opensऔरopen module - उपयोग के लिए पठनीयता और अभिगम्यता दोनों आवश्यक हैं
अगला विषय: provides और uses के माध्यम से सेवाओं द्वारा अलगाव।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “requires और exports” पाठ निःशुल्क है?
हाँ—“requires और exports” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“requires और exports” में मैं क्या सीखूँगा?
Dependencies और visibility नियंत्रित करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“requires और exports” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- module-info.java
- requires और exports
- provides/uses के साथ Services
- Modules में माइग्रेट करना