लोड हो रहा है...

Java में Records

record से कॉम्पैक्ट डेटा टाइप घोषित करें और उसके कॉम्पोनेंट पढ़ें। Card.java में package-private record Tag(String name) {} रखें, public क्लास Card रखें, Tag t = new Tag("oak"); बनाएँ, और t.name() प्रिंट करें। javac Card.java से कंपाइल करें और java Card चलाएँ। स्क्रीन पर oak होना चाहिए। दूसरी डेमो में int कॉम्पोनेंट जोड़ें ताकि स्क्रीन oak, फिर 3 दिखाए। JUnit अगले पेज के लिए छोड़ दें। यह पाठ Records accessors है, Streams पाइपलाइन नहीं और Lambda forEach चाल नहीं।

एक कॉम्पोनेंट, एक accessor

Card.java खोलें। public क्लास नाम Card रखें। बचे Pipe streams डेमो, बचे Cue lambda प्रिंट, बची Bin generics सूचियाँ, और बचे Box Scanner प्रॉम्प्ट हटाएँ अगर वे records कहानी दबाते हैं। प्रोग्राम टाइपिंग का इंतज़ार न करे और stream पाइपलाइन शुरू न करे।
public क्लास के ऊपर record घोषित करें:
record Tag(String name) {}
Card.main में एक इंस्टेंस बनाएँ और accessor प्रिंट करें:
Tag t = new Tag("oak");
System.out.println(t.name());
record हेडर कोष्ठक में कॉम्पोनेंट सूचीबद्ध करता है। Java कंस्ट्रक्टर और उस कॉम्पोनेंट के लिए accessor name() बनाता है। स्क्रीन oak दिखाती है।

Card record Tag prints oak

java
record Tag(String name) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak");
        System.out.println(t.name());
    }
}

जिस फ़ोल्डर में Card.java है, वहाँ javac Card.java चलाएँ। ब्रेस और कोष्ठक मिलने पर javac अपनी कोई लाइन नहीं लिखता। फिर java Card चलाएँ — java Card.java नहीं और java Tag नहीं। एक public क्लास रखें ताकि रन नाम Card से मिले। record Tag उसी फ़ाइल में package-private रहे।
एक बार रन चलाएँ। Java Card.main से शुरू होता है। new Tag("oak") कॉम्पोनेंट स्टोर करता है। t.name() "oak" लौटाता है। println oak लिखता है। कुछ भी stream() नहीं बुलाता। कुछ भी forEach नहीं बुलाता। कुछ भी args[0] नहीं पढ़ता।
स्क्रीन देखते हुए शुरुआती नियम बोलें: record टाइप और कॉम्पोनेंट नाम देता है; accessor कॉम्पोनेंट नाम से मिलता है; new से बनाएँ। इस पेज पर JUnit डेमो न बनाएँ। JUnit अगले वैकल्पिक पाठ की प्रतीक्षा में है। record को लंबी हाथ से लिखी getters वाली क्लास से शिक्षण फ़ाइल में न बदलें — record हेडर रखें।
अगर बचे Pipe streams फ़ाइल से अभी भी OAK फिर PINE दिखे, Card पर जाएँ और t.name() रखें। अगर javac दो public टाइप की शिकायत करे, सिर्फ़ Card public रखें और record Tag बिना public छोड़ें।

दो कॉम्पोनेंट, दो प्रिंट

वही public क्लास Card रखें। record को दो कॉम्पोनेंट तक बढ़ाएँ:
record Tag(String name, int n) {}
Tag t = new Tag("oak", 3);
System.out.println(t.name());
System.out.println(t.n());
फिर javac Card.java से कंपाइल करें और java Card चलाएँ। स्क्रीन oak, फिर 3 दिखाती है। हर कॉम्पोनेंट को उसी नाम का accessor मिलता है। हेडर में क्रम कंस्ट्रक्टर आर्ग्युमेंट से मेल खाता है।

Card record Tag prints oak then 3

java
record Tag(String name, int n) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak", 3);
        System.out.println(t.name());
        System.out.println(t.n());
    }
}

एक बार रन चलाएँ। name() "oak" लौटाता है। n() 3 लौटाता है। दोनों डेमो को दो शिक्षण आकार रखें। पहले एक कॉम्पोनेंट साबित करें। फिर दो कॉम्पोनेंट साबित करें। दोनों आकार public Card के बगल में package-private record साझा करते हैं।
अगर कंस्ट्रक्टर आर्ग्युमेंट बदल दें तो मान गलत कॉम्पोनेंट में जाते हैं। जो शिक्षण फ़ाइल रखें उसमें "oak" पहले और 3 दूसरे रखें।

Record आदतें

अभ्यास करते समय कॉम्पैक्ट हेडर और accessors साथ रखें।

📊 Card के लिए record आदतें

आदत आकार शुरुआती जाँच
घोषित करें record Tag(String name) {} कॉम्पोनेंट हेडर में
बनाएँ new Tag("oak") आर्ग्युमेंट क्रम मिले
पढ़ें t.name() accessor नाम कॉम्पोनेंट से मिले
दो फ़ील्ड record Tag(String name, int n) {} हर कॉम्पोनेंट का accessor
Public क्लास public class Card java Card से चलाएँ, java Tag नहीं

Records न Streams है न JUnit

Streams ने पाइपलाइन में सूची मान फ़िल्टर और मैप कीं। Records कॉम्पैक्ट टाइप में तय कॉम्पोनेंट सेट रखते हैं। JUnit बाद के वैकल्पिक पेज पर टेस्ट से व्यवहार जाँचेगा। आज एक शुरुआती फ़ाइल में ये तीन काम न मिलाएँ।
यहाँ oak वह record कॉम्पोनेंट मान है जो name() लौटाता है। यह stream filter नतीजा नहीं और अकेला Lambda forEach भ्रमण नहीं। जब बची Pipe फ़ाइल अभी भी बड़े अक्षरों में mapped शब्द प्रिंट करे, उसे इतिहास मानें और Card की t.name() लाइन रखें।
record कीवर्ड के बिना इस पेज का कॉम्पैक्ट हेडर गायब हो जाता है। बिना मेल खाते कंस्ट्रक्टर आर्ग्युमेंट के javac कॉल अस्वीकार करता है। हर डेमो अभ्यास में हेडर और new लाइन संरेखित रखें। उस पाठ तक JUnit एनोटेशन इस पेज पर न रखें, भले ही वैकल्पिक पथ में कहीं टेस्टिंग शीर्षक देख चुके हों। छोटा record आकार पसंद करें ताकि स्क्रीन शिक्षण फ़ाइल की हर सावधानी पढ़ाई पर name() और n() से जुड़ी रहे।

JUnit से पहले फ़ोल्डर जाँच

सफल कंपाइल के बाद फ़ोल्डर सूचीबद्ध करें। Card.java और Card.class साथ दिखने चाहिए, और आमतौर पर record के लिए Tag.class भी। स्रोत संपादित करें, सेव करें, javac Card.java चलाएँ, फिर java Card। पुराना .class पुरानी एक-लाइन स्क्रीन दिखा सकता है अगर n जोड़ने के बाद कंपाइल छोड़ दें।
अगर javac दोहरी public क्लास की शिकायत करे, सिर्फ़ Card public रखें। अगर स्क्रीन oak की बजाय Tag[oak] दिखाए, आपने पूरा record प्रिंट किया — शिक्षण प्रिंट t.name() पर रखें। अगर कुछ प्रिंट न हो, पुष्टि करें main अभी भी println बुलाता है।
Pipe stream().map Card में न चिपकाएँ। Cue forEach record कहानी के बदले न चिपकाएँ। वैकल्पिक records काम कॉम्पैक्ट टाइप और accessors है।

वैकल्पिक JUnit से पहले

आप record Tag(String name) {} रख सकते हैं, new Tag("oak") बनाएँ, t.name() को oak प्रिंट करें, फिर record Tag(String name, int n) {} इस्तेमाल करें, oak और 3 प्रिंट करें। javac Card.java से कंपाइल करें और java Card चलाएँ। तालिका घोषणा, निर्माण और पढ़ना अलग करती है। अगला वैकल्पिक पेज JUnit है।
स्पष्ट records जोड़ी के लिए Card डेमो रखें। records अभ्यास करते समय Pipe streams फ़ाइलें इस पेज से दूर रखें। records अभ्यास करते समय Cue lambda फ़ाइलें इस पेज से दूर रखें। उस पाठ तक JUnit काम इस पेज से दूर रखें। ये आदतें आगे बढ़ने से पहले चेकपॉइंट हैं। जब एक-फ़ील्ड स्क्रीन oak या दो-फ़ील्ड स्क्रीन oak फिर 3 दिखाए, इस पाठ के लिए Records ने अपना काम किया और वैकल्पिक पथ जारी रखें तो JUnit के लिए तैयार हैं।
फ़ोल्डर में आखिरी बार: एक public Card, package-private record Tag, मेल खाते कंस्ट्रक्टर आर्ग्युमेंट, accessor प्रिंट, Scanner इंतज़ार नहीं, stream पाइपलाइन ज़रूरी नहीं। खुली डेमो पर फिर javac Card.java और java Card चलाएँ। अगर स्क्रीन अभी भी oak या oak फिर 3 दिखाए, Records आकार मज़बूत है और कोर्स अगले पेज पर वैकल्पिक JUnit पर जा सकता है। हर पढ़ाई में एक स्पष्ट record आदत पसंद करें ताकि हर बार एक ही नक्शा सिखे।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

❓
5
प्रश्न
🎯
70%
पास करने के लिए
♾️
∞
समय
🔄
∞
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी